From: Mike Yuan Date: Tue, 7 Oct 2025 14:09:45 +0000 (+0200) Subject: json-util: use JSON_VARIANT_ARRAY_FOREACH where appropriate X-Git-Tag: v259-rc1~366 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0294c09e5b98e08edf4a87152ffd0c5e3ca9f409;p=thirdparty%2Fsystemd.git json-util: use JSON_VARIANT_ARRAY_FOREACH where appropriate --- diff --git a/src/libsystemd/sd-json/json-util.c b/src/libsystemd/sd-json/json-util.c index bb7c5edfbfc..b5d687c644c 100644 --- a/src/libsystemd/sd-json/json-util.c +++ b/src/libsystemd/sd-json/json-util.c @@ -554,8 +554,8 @@ int json_dispatch_devnum(const char *name, sd_json_variant *variant, sd_json_dis } int json_dispatch_strv_environment(const char *name, sd_json_variant *variant, sd_json_dispatch_flags_t flags, void *userdata) { + char ***l = ASSERT_PTR(userdata); _cleanup_strv_free_ char **n = NULL; - char ***l = userdata; int r; if (sd_json_variant_is_null(variant)) { @@ -566,20 +566,19 @@ int json_dispatch_strv_environment(const char *name, sd_json_variant *variant, s if (!sd_json_variant_is_array(variant)) return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an array.", strna(name)); - for (size_t i = 0; i < sd_json_variant_elements(variant); i++) { - sd_json_variant *e; - const char *a; + sd_json_variant *i; + JSON_VARIANT_ARRAY_FOREACH(i, variant) { + const char *e; - e = sd_json_variant_by_index(variant, i); - if (!sd_json_variant_is_string(e)) + if (!sd_json_variant_is_string(i)) return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an array of strings.", strna(name)); - assert_se(a = sd_json_variant_string(e)); - - if (!env_assignment_is_valid(a)) - return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an array of environment variables.", strna(name)); + e = ASSERT_PTR(sd_json_variant_string(i)); + if (!env_assignment_is_valid(e)) + return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), + "JSON field '%s' contains invalid environment variable assignment.", strna(name)); - r = strv_env_replace_strdup(&n, a); + r = strv_env_replace_strdup(&n, e); if (r < 0) return json_log_oom(variant, flags); }