chiark / gitweb /
nspawn: create empty /etc/resolv.conf if necessary
[elogind.git] / src / libsystemd-bus / bus-control.c
index 7c139cfd32cab7cb579e837056d58204ce7a9466..e980bfc740d1f6466bd105febd11dedac9be1208 100644 (file)
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 ***/
 
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+#include <valgrind/memcheck.h>
+#endif
+
 #include <stddef.h>
 #include <errno.h>
 
@@ -62,17 +66,20 @@ int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
                 size_t l;
 
                 l = strlen(name);
-                n = alloca(offsetof(struct kdbus_cmd_name, name) + l + 1);
+                n = alloca0(offsetof(struct kdbus_cmd_name, name) + l + 1);
                 n->size = offsetof(struct kdbus_cmd_name, name) + l + 1;
-                n->flags = flags;
-                n->id = 0;
+                n->name_flags = flags;
                 memcpy(n->name, name, l+1);
 
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+                VALGRIND_MAKE_MEM_DEFINED(n, n->size);
+#endif
+
                 r = ioctl(bus->input_fd, KDBUS_CMD_NAME_ACQUIRE, n);
                 if (r < 0)
                         return -errno;
 
-                return n->flags;
+                return n->name_flags;
         } else {
                 r = sd_bus_call_method(
                                 bus,
@@ -113,17 +120,18 @@ int sd_bus_release_name(sd_bus *bus, const char *name) {
                 size_t l;
 
                 l = strlen(name);
-                n = alloca(offsetof(struct kdbus_cmd_name, name) + l + 1);
+                n = alloca0(offsetof(struct kdbus_cmd_name, name) + l + 1);
                 n->size = offsetof(struct kdbus_cmd_name, name) + l + 1;
-                n->flags = 0;
-                n->id = 0;
                 memcpy(n->name, name, l+1);
 
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+                VALGRIND_MAKE_MEM_DEFINED(n, n->size);
+#endif
                 r = ioctl(bus->input_fd, KDBUS_CMD_NAME_RELEASE, n);
                 if (r < 0)
                         return -errno;
 
-                return n->flags;
+                return n->name_flags;
         } else {
                 r = sd_bus_call_method(
                                 bus,