link: allocate correct number of bytes in ethtool_set_features()

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: 50725d10e3
This commit is contained in:
Thomas Haller 2018-08-07 16:01:18 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent 274f0dbeb5
commit 3301f9eb97
1 changed files with 1 additions and 1 deletions

View 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);