mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-09-03 20:21:33 +00:00
sd-bus: create clean error when a property Set() call with incorrect signature is passed in
(cherry picked from commit 0ca454d474)
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
f1bf35a835
commit
326f2a7395
@@ -617,6 +617,9 @@ static int property_get_set_callbacks_run(
|
||||
return r;
|
||||
|
||||
} else {
|
||||
const char *signature = NULL;
|
||||
char type = 0;
|
||||
|
||||
if (c->vtable->type != _SD_BUS_VTABLE_WRITABLE_PROPERTY)
|
||||
return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_PROPERTY_READ_ONLY, "Property '%s' is not writable.", c->member);
|
||||
|
||||
@@ -628,6 +631,13 @@ static int property_get_set_callbacks_run(
|
||||
|
||||
c->last_iteration = bus->iteration_counter;
|
||||
|
||||
r = sd_bus_message_peek_type(m, &type, &signature);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (type != 'v' || !streq(strempty(signature), strempty(c->vtable->x.property.signature)))
|
||||
return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_INVALID_ARGS, "Incorrect parameters for property '%s', expected '%s', got '%s'.", c->member, strempty(c->vtable->x.property.signature), strempty(signature));
|
||||
|
||||
r = sd_bus_message_enter_container(m, 'v', c->vtable->x.property.signature);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
Reference in New Issue
Block a user