[systemd-commits] 5 commits - src/libsystemd-bus src/systemd

Lennart Poettering lennart at kemper.freedesktop.org
Fri Apr 5 05:57:03 PDT 2013


 src/libsystemd-bus/bus-control.c   |  144 ++++++++++++-------------------------
 src/libsystemd-bus/bus-message.c   |    4 -
 src/libsystemd-bus/sd-bus.c        |   76 ++++++++++++++++++-
 src/libsystemd-bus/test-bus-chat.c |  110 +++++++---------------------
 src/systemd/sd-bus.h               |    2 
 5 files changed, 158 insertions(+), 178 deletions(-)

New commits:
commit b7f247e0befb6595049bc2410fe370e21d1f7444
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Apr 5 14:55:28 2013 +0200

    bus: various improvements for test-bus-chat

diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
index 8b8ce3c..6f8d444 100644
--- a/src/libsystemd-bus/sd-bus.c
+++ b/src/libsystemd-bus/sd-bus.c
@@ -1314,7 +1314,12 @@ int sd_bus_send_with_reply_and_block(
                                 /* Found a match! */
 
                                 if (incoming->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN) {
-                                        *reply = incoming;
+
+                                        if (reply)
+                                                *reply = incoming;
+                                        else
+                                                sd_bus_message_unref(incoming);
+
                                         return 0;
                                 }
 
diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c
index 868a5b1..533d78c 100644
--- a/src/libsystemd-bus/test-bus-chat.c
+++ b/src/libsystemd-bus/test-bus-chat.c
@@ -206,14 +206,14 @@ static int server(sd_bus *bus) {
                         client2_gone = true;
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Slow")) {
 
+                        sleep(1);
+
                         r = sd_bus_reply_method_return(bus, m, NULL);
                         if (r < 0) {
                                 log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
 
-                        sleep(1);
-
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "FileDescriptor")) {
                         int fd;
                         static const char x = 'X';
@@ -305,31 +305,18 @@ static void* client1(void*p) {
                 goto finish;
         }
 
-        sd_bus_message_unref(m);
-        m = NULL;
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.systemd.test",
                         "/",
                         "org.freedesktop.systemd.test",
                         "FileDescriptor",
-                        &m);
-        if (r < 0) {
-                log_error("Failed to allocate method call: %s", strerror(-r));
-                goto finish;
-        }
-
-        r = sd_bus_message_append(m, "h", pp[1]);
-        if (r < 0) {
-                log_error("Failed to append string: %s", strerror(-r));
-                goto finish;
-        }
-
-        sd_bus_message_unref(reply);
-        reply = NULL;
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, &error, &reply);
+                        &error,
+                        NULL,
+                        "h",
+                        pp[1]);
         if (r < 0) {
-                log_error("Failed to issue method call: %s", bus_error_message(&error, -r));
+                log_error("Failed to issue method call: %s", strerror(-r));
                 goto finish;
         }
 
@@ -352,12 +339,11 @@ finish:
                                 "org.freedesktop.systemd.test",
                                 "ExitClient1",
                                 &q);
-                if (r < 0) {
+                if (r < 0)
                         log_error("Failed to allocate method call: %s", strerror(-r));
-                        goto finish;
-                }
+                else
+                        sd_bus_send(bus, q, NULL);
 
-                sd_bus_send(bus, q, NULL);
                 sd_bus_flush(bus);
                 sd_bus_unref(bus);
         }

commit d4100e2444fc78156a205bbb05703b31063e1248
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Apr 5 14:49:45 2013 +0200

    bus: convert a couple of calls over to new convenience functions

diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c
index dd40444..a0abccf 100644
--- a/src/libsystemd-bus/bus-control.c
+++ b/src/libsystemd-bus/bus-control.c
@@ -46,7 +46,7 @@ int sd_bus_get_unique_name(sd_bus *bus, const char **unique) {
 }
 
 int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
-        _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
+        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
         uint32_t ret;
         int r;
 
@@ -55,21 +55,17 @@ int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
         if (!name)
                 return -EINVAL;
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "RequestName",
-                        &m);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_append(m, "su", name, flags);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
+                        NULL,
+                        &reply,
+                        "su",
+                        name,
+                        flags);
         if (r < 0)
                 return r;
 
@@ -81,7 +77,7 @@ int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
 }
 
 int sd_bus_release_name(sd_bus *bus, const char *name) {
-        _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
+        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
         uint32_t ret;
         int r;
 
@@ -90,21 +86,16 @@ int sd_bus_release_name(sd_bus *bus, const char *name) {
         if (!name)
                 return -EINVAL;
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "ReleaseName",
-                        &m);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_append(m, "s", name);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
+                        NULL,
+                        &reply,
+                        "s",
+                        name);
         if (r < 0)
                 return r;
 
@@ -116,7 +107,7 @@ int sd_bus_release_name(sd_bus *bus, const char *name) {
 }
 
 int sd_bus_list_names(sd_bus *bus, char ***l) {
-        _cleanup_bus_message_unref_ sd_bus_message *m1 = NULL, *reply1 = NULL, *m2 = NULL, *reply2 = NULL;
+        _cleanup_bus_message_unref_ sd_bus_message *reply1 = NULL, *reply2 = NULL;
         char **x = NULL;
         int r;
 
@@ -125,31 +116,27 @@ int sd_bus_list_names(sd_bus *bus, char ***l) {
         if (!l)
                 return -EINVAL;
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "ListNames",
-                        &m1);
+                        NULL,
+                        &reply1,
+                        NULL);
         if (r < 0)
                 return r;
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "ListActivatableNames",
-                        &m2);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_send_with_reply_and_block(bus, m1, 0, NULL, &reply1);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_send_with_reply_and_block(bus, m2, 0, NULL, &reply2);
+                        NULL,
+                        &reply2,
+                        NULL);
         if (r < 0)
                 return r;
 
@@ -170,7 +157,7 @@ int sd_bus_list_names(sd_bus *bus, char ***l) {
 }
 
 int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) {
-        _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
+        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
         const char *found;
         int r;
 
@@ -179,21 +166,16 @@ int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) {
         if (!name)
                 return -EINVAL;
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "GetNameOwner",
-                        &m);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_append(m, "s", name);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
+                        NULL,
+                        &reply,
+                        "s",
+                        name);
         if (r < 0)
                 return r;
 
@@ -215,7 +197,7 @@ int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) {
 }
 
 int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) {
-        _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
+        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
         uint32_t u;
         int r;
 
@@ -226,21 +208,16 @@ int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) {
         if (!uid)
                 return -EINVAL;
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "GetConnectionUnixUser",
-                        &m);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_append(m, "s", name);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
+                        NULL,
+                        &reply,
+                        "s",
+                        name);
         if (r < 0)
                 return r;
 
@@ -253,7 +230,7 @@ int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) {
 }
 
 int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
-        _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
+        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
         uint32_t u;
         int r;
 
@@ -264,21 +241,16 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
         if (!pid)
                 return -EINVAL;
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "GetConnectionUnixProcessID",
-                        &m);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_append(m, "s", name);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
+                        NULL,
+                        &reply,
+                        "s",
+                        name);
         if (r < 0)
                 return r;
 
@@ -294,49 +266,33 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
 }
 
 int bus_add_match_internal(sd_bus *bus, const char *match) {
-        _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
-        int r;
-
         assert(bus);
         assert(match);
 
-        r = sd_bus_message_new_method_call(
+        return sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "AddMatch",
-                        &m);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_append(m, "s", match);
-        if (r < 0)
-                return r;
-
-        return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
+                        NULL,
+                        NULL,
+                        "s",
+                        match);
 }
 
 int bus_remove_match_internal(sd_bus *bus, const char *match) {
-        _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
-        int r;
-
         assert(bus);
         assert(match);
 
-        r = sd_bus_message_new_method_call(
+        return sd_bus_call_method(
                         bus,
                         "org.freedesktop.DBus",
                         "/",
                         "org.freedesktop.DBus",
                         "RemoveMatch",
-                        &m);
-        if (r < 0)
-                return r;
-
-        r = sd_bus_message_append(m, "s", match);
-        if (r < 0)
-                return r;
-
-        return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
+                        NULL,
+                        NULL,
+                        "s",
+                        match);
 }
diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c
index 6f711c1..868a5b1 100644
--- a/src/libsystemd-bus/test-bus-chat.c
+++ b/src/libsystemd-bus/test-bus-chat.c
@@ -53,13 +53,7 @@ static int object_callback(sd_bus *bus, int error, sd_bus_message *m, void *user
 
                 log_info("Invoked Foobar() on %s", sd_bus_message_get_path(m));
 
-                r = sd_bus_message_new_method_return(bus, m, &reply);
-                if (r < 0) {
-                        log_error("Failed to allocate return: %s", strerror(-r));
-                        return r;
-                }
-
-                r = sd_bus_send(bus, reply, NULL);
+                r = sd_bus_reply_method_return(bus, m, NULL);
                 if (r < 0) {
                         log_error("Failed to send reply: %s", strerror(-r));
                         return r;
@@ -142,7 +136,7 @@ static int server(sd_bus *bus) {
         bool client1_gone = false, client2_gone = false;
 
         while (!client1_gone || !client2_gone) {
-                _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
+                _cleanup_bus_message_unref_ sd_bus_message *m = NULL;
                 pid_t pid = 0;
 
                 r = sd_bus_process(bus, &m);
@@ -179,12 +173,6 @@ static int server(sd_bus *bus) {
                                 goto fail;
                         }
 
-                        r = sd_bus_message_new_method_return(bus, m, &reply);
-                        if (r < 0) {
-                                log_error("Failed to allocate return: %s", strerror(-r));
-                                goto fail;
-                        }
-
                         lowercase = strdup(hello);
                         if (!lowercase) {
                                 r = log_oom();
@@ -193,34 +181,34 @@ static int server(sd_bus *bus) {
 
                         ascii_strlower(lowercase);
 
-                        r = sd_bus_message_append(reply, "s", lowercase);
+                        r = sd_bus_reply_method_return(bus, m, "s", lowercase);
                         if (r < 0) {
-                                log_error("Failed to append message: %s", strerror(-r));
+                                log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient1")) {
 
-                        r = sd_bus_message_new_method_return(bus, m, &reply);
+                        r = sd_bus_reply_method_return(bus, m, NULL);
                         if (r < 0) {
-                                log_error("Failed to allocate return: %s", strerror(-r));
+                                log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
 
                         client1_gone = true;
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient2")) {
 
-                        r = sd_bus_message_new_method_return(bus, m, &reply);
+                        r = sd_bus_reply_method_return(bus, m, NULL);
                         if (r < 0) {
-                                log_error("Failed to allocate return: %s", strerror(-r));
+                                log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
 
                         client2_gone = true;
                 } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Slow")) {
 
-                        r = sd_bus_message_new_method_return(bus, m, &reply);
+                        r = sd_bus_reply_method_return(bus, m, NULL);
                         if (r < 0) {
-                                log_error("Failed to allocate return: %s", strerror(-r));
+                                log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
 
@@ -244,34 +232,21 @@ static int server(sd_bus *bus) {
 
                         close_nointr_nofail(fd);
 
-                        r = sd_bus_message_new_method_return(bus, m, &reply);
+                        r = sd_bus_reply_method_return(bus, m, NULL);
                         if (r < 0) {
-                                log_error("Failed to allocate return: %s", strerror(-r));
+                                log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
 
                 } else if (sd_bus_message_is_method_call(m, NULL, NULL)) {
 
-                        r = sd_bus_message_new_method_error(
+                        r = sd_bus_reply_method_error(
                                         bus, m,
-                                        &SD_BUS_ERROR_MAKE("org.freedesktop.DBus.Error.UnknownMethod", "Unknown method."),
-                                        &reply);
-                        if (r < 0) {
-                                log_error("Failed to allocate return: %s", strerror(-r));
-                                goto fail;
-                        }
-                }
-
-                if (reply) {
-                        r = sd_bus_send(bus, reply, NULL);
+                                        &SD_BUS_ERROR_MAKE("org.freedesktop.DBus.Error.UnknownMethod", "Unknown method."));
                         if (r < 0) {
                                 log_error("Failed to send reply: %s", strerror(-r));
                                 goto fail;
                         }
-
-                        /* log_info("Sent"); */
-                        /* bus_message_dump(reply); */
-                        /* sd_bus_message_rewind(reply, true); */
                 }
         }
 
@@ -301,27 +276,18 @@ static void* client1(void*p) {
                 goto finish;
         }
 
-        r = sd_bus_message_new_method_call(
+        r = sd_bus_call_method(
                         bus,
                         "org.freedesktop.systemd.test",
                         "/",
                         "org.freedesktop.systemd.test",
                         "LowerCase",
-                        &m);
-        if (r < 0) {
-                log_error("Failed to allocate method call: %s", strerror(-r));
-                goto finish;
-        }
-
-        r = sd_bus_message_append(m, "s", "HELLO");
-        if (r < 0) {
-                log_error("Failed to append string: %s", strerror(-r));
-                goto finish;
-        }
-
-        r = sd_bus_send_with_reply_and_block(bus, m, 0, &error, &reply);
+                        &error,
+                        &reply,
+                        "s",
+                        "HELLO");
         if (r < 0) {
-                log_error("Failed to issue method call: %s", bus_error_message(&error, -r));
+                log_error("Failed to issue method call: %s", strerror(-r));
                 goto finish;
         }
 

commit f10dda3b82dd493eada52bcc52b790a1cc1094e6
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Apr 5 14:48:43 2013 +0200

    bus: add convenience calls for method replies, too

diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
index fde39e0..8b8ce3c 100644
--- a/src/libsystemd-bus/sd-bus.c
+++ b/src/libsystemd-bus/sd-bus.c
@@ -2265,3 +2265,66 @@ int sd_bus_call_method(
 
         return sd_bus_send_with_reply_and_block(bus, m, 0, error, reply);
 }
+
+int sd_bus_reply_method_return(
+                sd_bus *bus,
+                sd_bus_message *call,
+                const char *types, ...) {
+
+        _cleanup_bus_message_unref_ sd_bus_message *m = NULL;
+        va_list ap;
+        int r;
+
+        if (!bus)
+                return -EINVAL;
+        if (!call)
+                return -EINVAL;
+        if (!call->sealed)
+                return -EPERM;
+        if (call->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL)
+                return -EINVAL;
+
+        if (call->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED)
+                return 0;
+
+        r = sd_bus_message_new_method_return(bus, call, &m);
+        if (r < 0)
+                return r;
+
+        va_start(ap, types);
+        r = bus_message_append_ap(m, types, ap);
+        va_end(ap);
+        if (r < 0)
+                return r;
+
+        return sd_bus_send(bus, m, NULL);
+}
+
+int sd_bus_reply_method_error(
+                sd_bus *bus,
+                sd_bus_message *call,
+                const sd_bus_error *e) {
+
+        _cleanup_bus_message_unref_ sd_bus_message *m = NULL;
+        int r;
+
+        if (!bus)
+                return -EINVAL;
+        if (!call)
+                return -EINVAL;
+        if (!call->sealed)
+                return -EPERM;
+        if (call->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL)
+                return -EINVAL;
+        if (!sd_bus_error_is_set(e))
+                return -EINVAL;
+
+        if (call->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED)
+                return 0;
+
+        r = sd_bus_message_new_method_error(bus, call, e, &m);
+        if (r < 0)
+                return r;
+
+        return sd_bus_send(bus, m, NULL);
+}
diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h
index 27226a9..5dcc501 100644
--- a/src/systemd/sd-bus.h
+++ b/src/systemd/sd-bus.h
@@ -149,6 +149,8 @@ int sd_bus_message_rewind(sd_bus_message *m, int complete);
 
 int sd_bus_emit_signal(sd_bus *bus, const char *path, const char *interface, const char *member, const char *types, ...);
 int sd_bus_call_method(sd_bus *bus, const char *destination, const char *path, const char *interface, const char *member, sd_bus_error *error, sd_bus_message **reply, const char *types, ...);
+int sd_bus_reply_method_return(sd_bus *bus, sd_bus_message *call, const char *types, ...);
+int sd_bus_reply_method_error(sd_bus *bus, sd_bus_message *call, const sd_bus_error *e);
 
 /* Bus management */
 

commit 88d331d5371860216a9ba1d8d30c3add352f36e5
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Apr 5 14:48:20 2013 +0200

    bus: when parsing signature strings, accept NULL as empty signature

diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c
index 7acab50..2d051e8 100644
--- a/src/libsystemd-bus/bus-message.c
+++ b/src/libsystemd-bus/bus-message.c
@@ -1250,7 +1250,9 @@ int bus_message_append_ap(
         int r;
 
         assert(m);
-        assert(types);
+
+        if (!types)
+                return 0;
 
         for (t = types; *t; t++) {
                 switch (*t) {

commit eba8617efc5ed1410acb14bee41433adac7011e2
Author: Lennart Poettering <lennart at poettering.net>
Date:   Fri Apr 5 14:47:49 2013 +0200

    bus: make sure callback structs are always properly initialized

diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
index 0b71f3e..fde39e0 100644
--- a/src/libsystemd-bus/sd-bus.c
+++ b/src/libsystemd-bus/sd-bus.c
@@ -1167,7 +1167,7 @@ int sd_bus_send_with_reply(
         if (r < 0)
                 return r;
 
-        c = new(struct reply_callback, 1);
+        c = new0(struct reply_callback, 1);
         if (!c)
                 return -ENOMEM;
 
@@ -2036,7 +2036,7 @@ int sd_bus_add_filter(sd_bus *bus, sd_bus_message_handler_t callback, void *user
         if (!callback)
                 return -EINVAL;
 
-        f = new(struct filter_callback, 1);
+        f = new0(struct filter_callback, 1);
         if (!f)
                 return -ENOMEM;
         f->callback = callback;
@@ -2088,7 +2088,7 @@ static int bus_add_object(
         if (r < 0)
                 return r;
 
-        c = new(struct object_callback, 1);
+        c = new0(struct object_callback, 1);
         if (!c)
                 return -ENOMEM;
 



More information about the systemd-commits mailing list