From: Lennart Poettering Date: Thu, 23 Nov 2023 21:24:20 +0000 (+0100) Subject: varlink: add helper varlink_error_invalid_parameter_name() X-Git-Tag: v256-rc1~1431^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=afc50293bbe03b7b7a6c9d995ea9cb19a425752c;p=thirdparty%2Fsystemd.git varlink: add helper varlink_error_invalid_parameter_name() --- diff --git a/src/pcrextend/pcrextend.c b/src/pcrextend/pcrextend.c index 12959496ded..ead353f5a69 100644 --- a/src/pcrextend/pcrextend.c +++ b/src/pcrextend/pcrextend.c @@ -276,18 +276,18 @@ static int vl_method_extend(Varlink *link, JsonVariant *parameters, VarlinkMetho return r; if (!TPM2_PCR_INDEX_VALID(p.pcr)) - return varlink_errorb(link, VARLINK_ERROR_INVALID_PARAMETER, JSON_BUILD_OBJECT(JSON_BUILD_PAIR_STRING("parameter", "pcr"))); + return varlink_error_invalid_parameter_name(link, "pcr"); if (p.text) { /* Specifying both the text string and the binary data is not allowed */ if (p.data.iov_base) - return varlink_errorb(link, VARLINK_ERROR_INVALID_PARAMETER, JSON_BUILD_OBJECT(JSON_BUILD_PAIR_STRING("parameter", "data"))); + return varlink_error_invalid_parameter_name(link, "data"); r = extend_now(p.pcr, p.text, strlen(p.text), _TPM2_USERSPACE_EVENT_TYPE_INVALID); } else if (p.data.iov_base) r = extend_now(p.pcr, p.data.iov_base, p.data.iov_len, _TPM2_USERSPACE_EVENT_TYPE_INVALID); else - return varlink_errorb(link, VARLINK_ERROR_INVALID_PARAMETER, JSON_BUILD_OBJECT(JSON_BUILD_PAIR_STRING("parameter", "text"))); + return varlink_error_invalid_parameter_name(link, "text"); if (r < 0) return r; diff --git a/src/shared/varlink.c b/src/shared/varlink.c index 3735c20773b..9d68ba8b381 100644 --- a/src/shared/varlink.c +++ b/src/shared/varlink.c @@ -1336,7 +1336,7 @@ static int varlink_dispatch_method(Varlink *v) { varlink_log_errno(v, r, "Parameters for method %s() didn't pass validation on field '%s': %m", method, strna(bad_field)); if (IN_SET(v->state, VARLINK_PROCESSING_METHOD, VARLINK_PROCESSING_METHOD_MORE)) { - r = varlink_errorb(v, VARLINK_ERROR_INVALID_PARAMETER, JSON_BUILD_OBJECT(JSON_BUILD_PAIR_STRING("parameter", bad_field))); + r = varlink_error_invalid_parameter_name(v, bad_field); if (r < 0) return r; } @@ -2422,6 +2422,13 @@ int varlink_error_invalid_parameter(Varlink *v, JsonVariant *parameters) { return -EINVAL; } +int varlink_error_invalid_parameter_name(Varlink *v, const char *name) { + return varlink_errorb( + v, + VARLINK_ERROR_INVALID_PARAMETER, + JSON_BUILD_OBJECT(JSON_BUILD_PAIR("parameter", JSON_BUILD_STRING(name)))); +} + int varlink_error_errno(Varlink *v, int error) { return varlink_errorb( v, @@ -2501,8 +2508,7 @@ int varlink_dispatch(Varlink *v, JsonVariant *parameters, const JsonDispatch tab r = json_dispatch_full(parameters, table, /* bad= */ NULL, /* flags= */ 0, userdata, &bad_field); if (r < 0) { if (bad_field) - return varlink_errorb(v, VARLINK_ERROR_INVALID_PARAMETER, - JSON_BUILD_OBJECT(JSON_BUILD_PAIR("parameter", JSON_BUILD_STRING(bad_field)))); + return varlink_error_invalid_parameter_name(v, bad_field); return r; } diff --git a/src/shared/varlink.h b/src/shared/varlink.h index f8e7f5d554f..c60f695be78 100644 --- a/src/shared/varlink.h +++ b/src/shared/varlink.h @@ -109,6 +109,7 @@ int varlink_replyb(Varlink *v, ...); int varlink_error(Varlink *v, const char *error_id, JsonVariant *parameters); int varlink_errorb(Varlink *v, const char *error_id, ...); int varlink_error_invalid_parameter(Varlink *v, JsonVariant *parameters); +int varlink_error_invalid_parameter_name(Varlink *v, const char *name); int varlink_error_errno(Varlink *v, int error); /* Enqueue a "more" reply */ diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c index 8dc515e4d52..33cb8c19635 100644 --- a/src/sysext/sysext.c +++ b/src/sysext/sysext.c @@ -342,7 +342,7 @@ static int parse_image_class_parameter(Varlink *link, const char *value, ImageCl c = image_class_from_string(value); if (!IN_SET(c, IMAGE_SYSEXT, IMAGE_CONFEXT)) - return varlink_errorb(link, VARLINK_ERROR_INVALID_PARAMETER, JSON_BUILD_OBJECT(JSON_BUILD_PAIR_STRING("parameter", "class"))); + return varlink_error_invalid_parameter_name(link, "class"); if (hierarchies) { r = parse_env_extension_hierarchies(&h, image_class_info[c].name_env);