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: v220~891 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2c07315225bef6be4830bce25a74da7f0ba4fcdc;p=thirdparty%2Fsystemd.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 9e78a678ef4..d6b8c90090f 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;