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://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=cd6f997f71c3aba16aa08226d423d14cbc787f82;p=elogind.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 e68b43bba..437f6dfd4 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;