link: allocate correct number of bytes in ethtool_set_features()
authorThomas Haller <thaller@redhat.com>
Tue, 7 Aug 2018 14:01:18 +0000 (16:01 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 27 Aug 2018 12:14:30 +0000 (14:14 +0200)
sfeatures is a "struct ethtool_sfeatures". Use sizeof() on the correct
data type.

Since "struct ethtool_gstrings" is larger than "struct ethtool_sfeatures",
this had no serious consequences.

Fixes: 50725d10e3417fd357abe1df2f177b8458027ac7

src/udev/net/ethtool-util.c

index 2051a99..51c0cea 100644 (file)
@@ -320,7 +320,7 @@ int ethtool_set_features(int *fd, const char *ifname, int *features) {
         if (r < 0)
                 return log_warning_errno(r, "link_config: could not get ethtool features for %s", ifname);
 
-        sfeatures = alloca0(sizeof(struct ethtool_gstrings) + DIV_ROUND_UP(strings->len, 32U) * sizeof(sfeatures->features[0]));
+        sfeatures = alloca0(sizeof(struct ethtool_sfeatures) + DIV_ROUND_UP(strings->len, 32U) * sizeof(sfeatures->features[0]));
         sfeatures->cmd = ETHTOOL_SFEATURES;
         sfeatures->size = DIV_ROUND_UP(strings->len, 32U);