}
static int varlink_sanitize_parameters(JsonVariant **v) {
+ int r;
+
assert(v);
/* Varlink always wants a parameters list, hence make one if the caller doesn't want any */
if (!*v)
return json_variant_new_object(v, NULL, 0);
- else if (!json_variant_is_object(*v))
+ if (json_variant_is_null(*v)) {
+ JsonVariant *empty;
+
+ r = json_variant_new_object(&empty, NULL, 0);
+ if (r < 0)
+ return r;
+
+ json_variant_unref(*v);
+ *v = empty;
+ return 0;
+ }
+ if (!json_variant_is_object(*v))
return -EINVAL;
return 0;
} else if (streq(k, "parameters")) {
if (parameters)
goto invalid;
- if (!json_variant_is_object(e))
+ if (!json_variant_is_object(e) && !json_variant_is_null(e))
goto invalid;
parameters = json_variant_ref(e);
} else if (streq(k, "parameters")) {
if (parameters)
goto invalid;
- if (!json_variant_is_object(e))
+ if (!json_variant_is_object(e) && !json_variant_is_null(e))
goto invalid;
parameters = json_variant_ref(e);