]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-netlink: add trailing NUL byte for safety in sd_netlink_message_read_data() 30893/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 11 Jan 2024 19:48:23 +0000 (04:48 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 11 Jan 2024 19:48:26 +0000 (04:48 +0900)
Then, drop sd_netlink_message_read_data_suffix0().

src/libsystemd/sd-netlink/netlink-message.c
src/network/networkd-wifi.c
src/shared/wifi-util.c
src/systemd/sd-netlink.h

index abe316b64bdc021a995628b0fcdbbece8e4f729d..49d000d47e3354c43d1cbf84fbef4991d8fa9322 100644 (file)
@@ -779,32 +779,6 @@ int sd_netlink_message_read_data(sd_netlink_message *m, uint16_t attr_type, size
 
         assert_return(m, -EINVAL);
 
-        r = netlink_message_read_internal(m, attr_type, &attr_data, NULL);
-        if (r < 0)
-                return r;
-
-        if (ret_data) {
-                void *data;
-
-                data = memdup(attr_data, r);
-                if (!data)
-                        return -ENOMEM;
-
-                *ret_data = data;
-        }
-
-        if (ret_size)
-                *ret_size = r;
-
-        return r;
-}
-
-int sd_netlink_message_read_data_suffix0(sd_netlink_message *m, uint16_t attr_type, size_t *ret_size, void **ret_data) {
-        void *attr_data;
-        int r;
-
-        assert_return(m, -EINVAL);
-
         r = netlink_message_read_internal(m, attr_type, &attr_data, NULL);
         if (r < 0)
                 return r;
index 98e7a72c1c79922655448b9fe3e2bea0279e7762..ee63c3ec9649558e4f446283b164d4cf5a1b0e58 100644 (file)
@@ -128,7 +128,7 @@ int manager_genl_process_nl80211_config(sd_netlink *genl, sd_netlink_message *me
                 return 0;
         }
 
-        r = sd_netlink_message_read_data_suffix0(message, NL80211_ATTR_SSID, &len, (void**) &ssid);
+        r = sd_netlink_message_read_data(message, NL80211_ATTR_SSID, &len, (void**) &ssid);
         if (r < 0 && r != -ENODATA) {
                 log_link_debug_errno(link, r, "nl80211: received %s(%u) message without valid SSID, ignoring: %m",
                                      strna(nl80211_cmd_to_string(cmd)), cmd);
index d4e6dcac07265f3266486dd53386c44b3550c42c..052f5606e5368a74e8e98903862524afe6d13b98 100644 (file)
@@ -55,7 +55,7 @@ int wifi_get_interface(sd_netlink *genl, int ifindex, enum nl80211_iftype *ret_i
         if (r < 0)
                 return log_debug_errno(r, "Failed to get NL80211_ATTR_IFTYPE attribute: %m");
 
-        r = sd_netlink_message_read_data_suffix0(reply, NL80211_ATTR_SSID, &len, (void**) &ssid);
+        r = sd_netlink_message_read_data(reply, NL80211_ATTR_SSID, &len, (void**) &ssid);
         if (r < 0 && r != -ENODATA)
                 return log_debug_errno(r, "Failed to get NL80211_ATTR_SSID attribute: %m");
         if (r >= 0) {
index c35bfc47c96d9981b530db58bd4cc9317ae78a1a..240d21f9cadc1a95a0ef3b1d07cf71ebf571be96 100644 (file)
@@ -106,7 +106,6 @@ int sd_netlink_message_cancel_array(sd_netlink_message *m);
 /* Reading messages */
 int sd_netlink_message_read(sd_netlink_message *m, uint16_t attr_type, size_t size, void *data);
 int sd_netlink_message_read_data(sd_netlink_message *m, uint16_t attr_type, size_t *ret_size, void **ret_data);
-int sd_netlink_message_read_data_suffix0(sd_netlink_message *m, uint16_t attr_type, size_t *ret_size, void **ret_data);
 int sd_netlink_message_read_string_strdup(sd_netlink_message *m, uint16_t attr_type, char **data);
 int sd_netlink_message_read_string(sd_netlink_message *m, uint16_t attr_type, const char **data);
 int sd_netlink_message_read_strv(sd_netlink_message *m, uint16_t container_type, uint16_t attr_type, char ***ret);