From: Laine Stump Date: Fri, 17 Feb 2017 19:28:55 +0000 (-0500) Subject: util: permit querying a VF MAC address or VLAN tag by itself X-Git-Tag: v3.2.0-rc1~159 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=176229dd05a6c96dec2b7b1c2fb0143d7331b10e;p=thirdparty%2Flibvirt.git util: permit querying a VF MAC address or VLAN tag by itself virNetDevParseVfConfig() assumed that both the MAC address and VLAN tag pointers were valid, so even if you only wanted one or the other, you would need a variable to hold the returned value for both. This patch checks each for a NULL pointer before filling it in. --- diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index 455239ad9b..2a0dabce7f 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -1603,7 +1603,7 @@ virNetDevParseVfConfig(struct nlattr **tb, int32_t vf, virMacAddrPtr mac, goto cleanup; } - if (tb[IFLA_VF_MAC]) { + if (mac && tb[IFLA_VF_MAC]) { vf_mac = RTA_DATA(tb_vf[IFLA_VF_MAC]); if (vf_mac && vf_mac->vf == vf) { virMacAddrSetRaw(mac, vf_mac->mac); @@ -1611,7 +1611,7 @@ virNetDevParseVfConfig(struct nlattr **tb, int32_t vf, virMacAddrPtr mac, } } - if (tb[IFLA_VF_VLAN]) { + if (vlanid && tb[IFLA_VF_VLAN]) { vf_vlan = RTA_DATA(tb_vf[IFLA_VF_VLAN]); if (vf_vlan && vf_vlan->vf == vf) { *vlanid = vf_vlan->vlan;