util: iptables: use VIR_AUTOFREE instead of VIR_FREE for scalar types

By making use of GNU C's cleanup attribute handled by the
VIR_AUTOFREE macro for declaring scalar variables, majority
of the VIR_FREE calls can be dropped, which in turn leads to
getting rid of most of our cleanup sections.

Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
Sukrit Bhatnagar 2018-07-24 21:22:36 +05:30 committed by Erik Skultety
parent a38abf267f
commit 280c81af6a

View File

@ -215,7 +215,7 @@ static char *iptablesFormatNetwork(virSocketAddr *netaddr,
unsigned int prefix) unsigned int prefix)
{ {
virSocketAddr network; virSocketAddr network;
char *netstr; VIR_AUTOFREE(char *) netstr = NULL;
char *ret; char *ret;
if (!(VIR_SOCKET_ADDR_IS_FAMILY(netaddr, AF_INET) || if (!(VIR_SOCKET_ADDR_IS_FAMILY(netaddr, AF_INET) ||
@ -238,7 +238,6 @@ static char *iptablesFormatNetwork(virSocketAddr *netaddr,
ignore_value(virAsprintf(&ret, "%s/%d", netstr, prefix)); ignore_value(virAsprintf(&ret, "%s/%d", netstr, prefix));
VIR_FREE(netstr);
return ret; return ret;
} }
@ -254,7 +253,7 @@ iptablesForwardAllowOut(virFirewallPtr fw,
const char *physdev, const char *physdev,
int action) int action)
{ {
char *networkstr; VIR_AUTOFREE(char *) networkstr = NULL;
virFirewallLayer layer = VIR_SOCKET_ADDR_FAMILY(netaddr) == AF_INET ? virFirewallLayer layer = VIR_SOCKET_ADDR_FAMILY(netaddr) == AF_INET ?
VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6; VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6;
@ -279,7 +278,6 @@ iptablesForwardAllowOut(virFirewallPtr fw,
"--jump", "ACCEPT", "--jump", "ACCEPT",
NULL); NULL);
VIR_FREE(networkstr);
return 0; return 0;
} }
@ -343,7 +341,7 @@ iptablesForwardAllowRelatedIn(virFirewallPtr fw,
{ {
virFirewallLayer layer = VIR_SOCKET_ADDR_FAMILY(netaddr) == AF_INET ? virFirewallLayer layer = VIR_SOCKET_ADDR_FAMILY(netaddr) == AF_INET ?
VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6; VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6;
char *networkstr; VIR_AUTOFREE(char *) networkstr = NULL;
if (!(networkstr = iptablesFormatNetwork(netaddr, prefix))) if (!(networkstr = iptablesFormatNetwork(netaddr, prefix)))
return -1; return -1;
@ -370,7 +368,6 @@ iptablesForwardAllowRelatedIn(virFirewallPtr fw,
"--jump", "ACCEPT", "--jump", "ACCEPT",
NULL); NULL);
VIR_FREE(networkstr);
return 0; return 0;
} }
@ -432,7 +429,7 @@ iptablesForwardAllowIn(virFirewallPtr fw,
{ {
virFirewallLayer layer = VIR_SOCKET_ADDR_FAMILY(netaddr) == AF_INET ? virFirewallLayer layer = VIR_SOCKET_ADDR_FAMILY(netaddr) == AF_INET ?
VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6; VIR_FIREWALL_LAYER_IPV4 : VIR_FIREWALL_LAYER_IPV6;
char *networkstr; VIR_AUTOFREE(char *) networkstr = NULL;
if (!(networkstr = iptablesFormatNetwork(netaddr, prefix))) if (!(networkstr = iptablesFormatNetwork(netaddr, prefix)))
return -1; return -1;
@ -454,7 +451,6 @@ iptablesForwardAllowIn(virFirewallPtr fw,
"--out-interface", iface, "--out-interface", iface,
"--jump", "ACCEPT", "--jump", "ACCEPT",
NULL); NULL);
VIR_FREE(networkstr);
return 0; return 0;
} }
@ -661,12 +657,11 @@ iptablesForwardMasquerade(virFirewallPtr fw,
const char *protocol, const char *protocol,
int action) int action)
{ {
int ret = -1; VIR_AUTOFREE(char *) networkstr = NULL;
char *networkstr = NULL; VIR_AUTOFREE(char *) addrStartStr = NULL;
char *addrStartStr = NULL; VIR_AUTOFREE(char *) addrEndStr = NULL;
char *addrEndStr = NULL; VIR_AUTOFREE(char *) portRangeStr = NULL;
char *portRangeStr = NULL; VIR_AUTOFREE(char *) natRangeStr = NULL;
char *natRangeStr = NULL;
virFirewallRulePtr rule; virFirewallRulePtr rule;
if (!(networkstr = iptablesFormatNetwork(netaddr, prefix))) if (!(networkstr = iptablesFormatNetwork(netaddr, prefix)))
@ -677,15 +672,15 @@ iptablesForwardMasquerade(virFirewallPtr fw,
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Attempted to NAT '%s'. NAT is only supported for IPv4."), _("Attempted to NAT '%s'. NAT is only supported for IPv4."),
networkstr); networkstr);
goto cleanup; return -1;
} }
if (VIR_SOCKET_ADDR_IS_FAMILY(&addr->start, AF_INET)) { if (VIR_SOCKET_ADDR_IS_FAMILY(&addr->start, AF_INET)) {
if (!(addrStartStr = virSocketAddrFormat(&addr->start))) if (!(addrStartStr = virSocketAddrFormat(&addr->start)))
goto cleanup; return -1;
if (VIR_SOCKET_ADDR_IS_FAMILY(&addr->end, AF_INET)) { if (VIR_SOCKET_ADDR_IS_FAMILY(&addr->end, AF_INET)) {
if (!(addrEndStr = virSocketAddrFormat(&addr->end))) if (!(addrEndStr = virSocketAddrFormat(&addr->end)))
goto cleanup; return -1;
} }
} }
@ -718,7 +713,7 @@ iptablesForwardMasquerade(virFirewallPtr fw,
if (port->start < port->end && port->end < 65536) { if (port->start < port->end && port->end < 65536) {
if (virAsprintf(&portRangeStr, ":%u-%u", if (virAsprintf(&portRangeStr, ":%u-%u",
port->start, port->end) < 0) port->start, port->end) < 0)
goto cleanup; return -1;
} else { } else {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Invalid port range '%u-%u'."), _("Invalid port range '%u-%u'."),
@ -739,7 +734,7 @@ iptablesForwardMasquerade(virFirewallPtr fw,
} }
if (r < 0) if (r < 0)
goto cleanup; return -1;
virFirewallRuleAddArgList(fw, rule, virFirewallRuleAddArgList(fw, rule,
"--jump", "SNAT", "--jump", "SNAT",
@ -753,14 +748,7 @@ iptablesForwardMasquerade(virFirewallPtr fw,
"--to-ports", &portRangeStr[1], NULL); "--to-ports", &portRangeStr[1], NULL);
} }
ret = 0; return 0;
cleanup:
VIR_FREE(networkstr);
VIR_FREE(addrStartStr);
VIR_FREE(addrEndStr);
VIR_FREE(portRangeStr);
VIR_FREE(natRangeStr);
return ret;
} }
/** /**
@ -827,8 +815,7 @@ iptablesForwardDontMasquerade(virFirewallPtr fw,
const char *destaddr, const char *destaddr,
int action) int action)
{ {
int ret = -1; VIR_AUTOFREE(char *) networkstr = NULL;
char *networkstr = NULL;
if (!(networkstr = iptablesFormatNetwork(netaddr, prefix))) if (!(networkstr = iptablesFormatNetwork(netaddr, prefix)))
return -1; return -1;
@ -838,7 +825,7 @@ iptablesForwardDontMasquerade(virFirewallPtr fw,
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Attempted to NAT '%s'. NAT is only supported for IPv4."), _("Attempted to NAT '%s'. NAT is only supported for IPv4."),
networkstr); networkstr);
goto cleanup; return -1;
} }
if (physdev && physdev[0]) if (physdev && physdev[0])
@ -859,10 +846,7 @@ iptablesForwardDontMasquerade(virFirewallPtr fw,
"--jump", "RETURN", "--jump", "RETURN",
NULL); NULL);
ret = 0; return 0;
cleanup:
VIR_FREE(networkstr);
return ret;
} }
/** /**