chiark / gitweb /
libudev: make valgrind happy
[elogind.git] / libudev / libudev-monitor.c
index 24e8aead2635595898aa6479aa25d023607fbdf6..c97f6faa653350489cdc5b907f26b53371a1b949 100644 (file)
@@ -342,6 +342,7 @@ int udev_monitor_filter_update(struct udev_monitor *udev_monitor)
        bpf_stmt(ins, &i, BPF_RET|BPF_K, 0xffffffff);
 
        /* install filter */
+       memset(&filter, 0x00, sizeof(filter));
        filter.len = i;
        filter.filter = ins;
        err = setsockopt(udev_monitor->sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter));
@@ -400,6 +401,16 @@ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
        return 0;
 }
 
+/**
+ * udev_monitor_set_receive_buffer_size:
+ * @udev_monitor: the monitor which should receive events
+ * @size: the size in bytes
+ *
+ * Set the size of the kernel socket buffer. This call needs the
+ * appropriate privileges to succeed.
+ *
+ * Returns: 0 on success, otherwise -1 on error.
+ */
 int udev_monitor_set_receive_buffer_size(struct udev_monitor *udev_monitor, int size)
 {
        if (udev_monitor == NULL)
@@ -615,8 +626,11 @@ retry:
        if (memcmp(buf, "libudev", 8) == 0) {
                /* udev message needs proper version magic */
                nlh = (struct udev_monitor_netlink_header *) buf;
-               if (nlh->magic != htonl(UDEV_MONITOR_MAGIC))
+               if (nlh->magic != htonl(UDEV_MONITOR_MAGIC)) {
+                       err(udev_monitor->udev, "ignored a message from an invalid release of udevadm (%x != %x)\n",
+                           nlh->magic, htonl(UDEV_MONITOR_MAGIC));
                        return NULL;
+               }
                if (nlh->properties_off+32 > buflen)
                        return NULL;
                bufpos = nlh->properties_off;