sd-netlink: fix assertion triggered by message_get_serial()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 30 Nov 2022 00:20:12 +0000 (09:20 +0900)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Wed, 30 Nov 2022 10:16:17 +0000 (10:16 +0000)
This fixes an issue introduced by 7b34bae3b1a8726e241a56600a6edf9b3733a4f4.

Fixes https://github.com/systemd/systemd/pull/25565#issuecomment-1331353945.

src/libsystemd/sd-netlink/sd-netlink.c

index 6eb7f659aec13c60bce374704a9c2c25497e7e42..fe888926a1d70b900ec39d09a750a8dd1f87146d 100644 (file)
@@ -187,7 +187,8 @@ static int dispatch_rqueue(sd_netlink *nl, sd_netlink_message **ret) {
 
         /* Dispatch a queued message */
         m = ordered_set_steal_first(nl->rqueue);
-        sd_netlink_message_unref(hashmap_remove_value(nl->rqueue_by_serial, UINT32_TO_PTR(message_get_serial(m)), m));
+        if (m)
+                sd_netlink_message_unref(hashmap_remove_value(nl->rqueue_by_serial, UINT32_TO_PTR(message_get_serial(m)), m));
         *ret = m;
         return !!m;
 }