X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-message.c;h=437f6dfd49d89840e1fbe716d7409eb0e7afeac0;hp=e68b43bbae8ef1a21ae6b6cbfdb025fb4a05ff05;hb=cd6f997f71c3aba16aa08226d423d14cbc787f82;hpb=7b05894275bc1158d752098581295377f13e7c60 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;