From: Lennart Poettering Date: Wed, 6 Nov 2013 01:01:43 +0000 (+0100) Subject: bus: handle serialization of NULL strings X-Git-Tag: v209~1627 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cd6f997f71c3aba16aa08226d423d14cbc787f82;p=thirdparty%2Fsystemd.git bus: handle serialization of NULL strings Instead of simply crashing be somewhat nicer and serialize a NULL string into the empty string and generate an error on signature and object path strings. --- diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index e68b43bbae8..437f6dfd49d 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -1347,14 +1347,29 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void switch (type) { case SD_BUS_TYPE_STRING: + /* To make things easy we'll serialize a NULL string + * into the empty string */ + p = strempty(p); + + /* Fall through... */ case SD_BUS_TYPE_OBJECT_PATH: + if (!p) { + r = -EINVAL; + goto fail; + } + align = 4; sz = 4 + strlen(p) + 1; break; case SD_BUS_TYPE_SIGNATURE: + if (!p) { + r = -EINVAL; + goto fail; + } + align = 1; sz = 1 + strlen(p) + 1; break;