X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=libudev%2Flibudev-monitor.c;h=c97f6faa653350489cdc5b907f26b53371a1b949;hb=9698e70c1feae3d4807e4b5c6b53cbc459313f12;hp=b3e5d5f348499bb20acb0a208fe414cfb75b4861;hpb=f712894dd4c2a2d8e374de133b7ed854e203fa96;p=elogind.git diff --git a/libudev/libudev-monitor.c b/libudev/libudev-monitor.c index b3e5d5f34..c97f6faa6 100644 --- a/libudev/libudev-monitor.c +++ b/libudev/libudev-monitor.c @@ -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)); @@ -625,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;