diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-10-24 19:24:53 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-10-24 19:24:53 +0200 |
commit | 455cd8b137b8ef45d04889f2d967c562a097f1e6 (patch) | |
tree | 131d470bb63c77d31cb5f7edbbb6385bb50b2fdf /src/libsystemd | |
parent | bb1fada8cc691821ade680c36dfb2be13e0658d6 (diff) |
sd-bus: if we don't manage to properly allocate the error message for an sd_bus_error, just go on
sd_bus_error_setfv() must initialize the sd_bus_error value to some
sensible value and then return a good errno code matching that. If it
cannot work at all it should set the error statically to the OOM error.
But if it can work half-way (i.e. initialize the name, but not the
message) it should do so and still return the correct errno number for
it.
This effectively reverts 8bf13eb1e02b9977ae1cd331ae5dc7305a305a09
Diffstat (limited to 'src/libsystemd')
-rw-r--r-- | src/libsystemd/sd-bus/bus-error.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c index 5ca974a191..af83c12d53 100644 --- a/src/libsystemd/sd-bus/bus-error.c +++ b/src/libsystemd/sd-bus/bus-error.c @@ -194,13 +194,10 @@ int bus_error_setfv(sd_bus_error *e, const char *name, const char *format, va_li return -ENOMEM; } - if (format) { - int r; - - r = vasprintf((char**) &e->message, format, ap); - if (r < 0) - return -ENOMEM; - } + /* Of we hit OOM on formatting the pretty message, we ignore + * this, since we at least managed to write the error name */ + if (format) + (void) vasprintf((char**) &e->message, format, ap); e->_need_free = 1; |