diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-05-03 23:06:19 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-05-03 23:06:19 +0200 |
commit | 6e476bc9d18c706564d797882df6a27ab2d45b8b (patch) | |
tree | 449713aeb86d01bf1c231f03332997ef68fa6c08 | |
parent | 06dab8e18aebf822392c7ca66c5bf3c1200fdec8 (diff) |
dbus: handle invalid enum values better
-rw-r--r-- | src/shared/dbus-common.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h index 859812900d..edb8107347 100644 --- a/src/shared/dbus-common.h +++ b/src/shared/dbus-common.h @@ -155,7 +155,7 @@ int bus_property_set_uint64(DBusMessageIter *i, const char *property, void *data assert(i); \ assert(property); \ \ - value = name##_to_string(*field); \ + value = strempty(name##_to_string(*field)); \ \ if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &value)) \ return -ENOMEM; \ @@ -166,15 +166,18 @@ int bus_property_set_uint64(DBusMessageIter *i, const char *property, void *data #define DEFINE_BUS_PROPERTY_SET_ENUM(function,name,type) \ int function(DBusMessageIter *i, const char *property, void *data) { \ const char *value; \ - type *field = data; \ + type f, *field = data; \ \ assert(i); \ assert(property); \ \ dbus_message_iter_get_basic(i, &value); \ \ - *field = name##_from_string(value); \ + f = name##_from_string(value); \ + if (f < 0) \ + return f; \ \ + *field = f; \ return 0; \ } |