]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
varlink: yet another fix around handling of IDL comments 33440/head
authorLennart Poettering <lennart@poettering.net>
Fri, 21 Jun 2024 15:05:26 +0000 (17:05 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 21 Jun 2024 15:06:54 +0000 (17:06 +0200)
Skip over them when validating a message against the IDL.

Add test case that tests this.

src/shared/varlink-idl.c
src/test/test-varlink-idl.c

index f81c38c53ddf4bf4c82799ac420e5d9f8a8aba4e..e6a4942ad8b14e107723b511a45b7917937bfb66 100644 (file)
@@ -1782,6 +1782,9 @@ static int varlink_idl_validate_symbol(const VarlinkSymbol *symbol, sd_json_vari
 
                 for (const VarlinkField *field = symbol->fields; field->field_type != _VARLINK_FIELD_TYPE_END_MARKER; field++) {
 
+                        if (field->field_type == _VARLINK_FIELD_COMMENT)
+                                continue;
+
                         assert(field->field_type == VARLINK_ENUM_VALUE);
 
                         if (streq_ptr(field->name, s)) {
@@ -1810,6 +1813,9 @@ static int varlink_idl_validate_symbol(const VarlinkSymbol *symbol, sd_json_vari
 
                 for (const VarlinkField *field = symbol->fields; field->field_type != _VARLINK_FIELD_TYPE_END_MARKER; field++) {
 
+                        if (field->field_type == _VARLINK_FIELD_COMMENT)
+                                continue;
+
                         if (field->field_direction != direction)
                                 continue;
 
index c2be1dfec04f60b1324fce6ad1938cc4bebcf196..92a714b5bd0767d1cb068d024171e65b5767cdc1 100644 (file)
@@ -279,7 +279,11 @@ TEST(validate_json) {
         /* This one has (nested) enonymous enums and structs */
         static const char text[] =
                 "interface validate.test\n"
-                "method Mymethod ( a:string, b:int, c:?bool, d:[]int, e:?[string]bool, f:?(piff, paff), g:(f:float) ) -> ()\n";
+                "method Mymethod ( \n"
+                "# piff   \n"
+                "a:string,\n"
+                "#paff\n"
+                "b:int, c:?bool, d:[]int, e:?[string]bool, f:?(piff, paff), g:(f:float) ) -> ()\n";
 
         assert_se(varlink_idl_parse(text, NULL, NULL, &parsed) >= 0);
         test_parse_format_one(parsed);