From: Zbigniew Jędrzejewski-Szmek Date: Sat, 7 Mar 2015 19:01:45 +0000 (-0500) Subject: machine: do not rely on asprintf setting arg on error X-Git-Tag: v219.0~477 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2c07315225bef6be4830bce25a74da7f0ba4fcdc;p=elogind.git machine: do not rely on asprintf setting arg on error Strictly speaking, the output variable is undefined if asprintf fails. We use the return value not the arg everywhere, and should we do here. --- diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c index 9e78a678e..d6b8c9009 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -471,6 +471,7 @@ int bus_machine_method_open_login(sd_bus *bus, sd_bus_message *message, void *us _cleanup_close_ int master = -1; Machine *m = userdata; const char *p; + char *address; int r; if (m->class != MACHINE_CONTAINER) @@ -509,13 +510,14 @@ int bus_machine_method_open_login(sd_bus *bus, sd_bus_message *message, void *us return r; #ifdef ENABLE_KDBUS - asprintf(&container_bus->address, "x-machine-kernel:pid=" PID_FMT ";x-machine-unix:pid=" PID_FMT, m->leader, m->leader); +# define ADDRESS_FMT "x-machine-kernel:pid=%1$" PID_PRI ";x-machine-unix:pid=%1$" PID_PRI #else - asprintf(&container_bus->address, "x-machine-unix:pid=" PID_FMT, m->leader); +# define ADDRESS_FMT "x-machine-unix:pid=%1$" PID_PRI #endif - if (!container_bus->address) + if (asprintf(&address, ADDRESS_FMT, m->leader) < 0) return log_oom(); + container_bus->address = address; container_bus->bus_client = true; container_bus->trusted = false; container_bus->is_system = true;