From: Lennart Poettering Date: Fri, 21 Jun 2024 15:05:26 +0000 (+0200) Subject: varlink: yet another fix around handling of IDL comments X-Git-Tag: v257-rc1~1063^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F33440%2Fhead;p=thirdparty%2Fsystemd.git varlink: yet another fix around handling of IDL comments Skip over them when validating a message against the IDL. Add test case that tests this. --- diff --git a/src/shared/varlink-idl.c b/src/shared/varlink-idl.c index f81c38c53dd..e6a4942ad8b 100644 --- a/src/shared/varlink-idl.c +++ b/src/shared/varlink-idl.c @@ -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; diff --git a/src/test/test-varlink-idl.c b/src/test/test-varlink-idl.c index c2be1dfec04..92a714b5bd0 100644 --- a/src/test/test-varlink-idl.c +++ b/src/test/test-varlink-idl.c @@ -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);