chiark / gitweb /
sd-bus: make sure %m resolves to the specified error in bus_error_set_errnofv()
authorLennart Poettering <lennart@poettering.net>
Fri, 28 Nov 2014 15:30:53 +0000 (16:30 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 28 Nov 2014 15:30:53 +0000 (16:30 +0100)
src/libsystemd/sd-bus/bus-error.c

index cfb8d147a77f3b289b0d9181a49e1b8ad6c466ab..47f90c26f8f466ed8c486025bf9609c6598c93c7 100644 (file)
@@ -444,6 +444,7 @@ _public_ int sd_bus_error_set_errno(sd_bus_error *e, int error) {
 }
 
 int bus_error_set_errnofv(sd_bus_error *e, int error, const char *format, va_list ap) {
+        PROTECT_ERRNO;
         int r;
 
         if (error < 0)
@@ -477,8 +478,9 @@ int bus_error_set_errnofv(sd_bus_error *e, int error, const char *format, va_lis
         if (format) {
                 char *m;
 
-                /* First, let's try to fill in the supplied message */
+                /* Then, let's try to fill in the supplied message */
 
+                errno = error; /* Make sure that %m resolves to the specified error */
                 r = vasprintf(&m, format, ap);
                 if (r >= 0) {