[libvirt] [PATCH] conf: Don't try formating non-existing addresses

Martin Kletzander mkletzan at redhat.com
Tue Aug 11 13:21:51 UTC 2015


On Tue, Aug 11, 2015 at 03:16:16PM +0200, Martin Kletzander wrote:
>Commit a6f9af8292b6 added checking for address colisions between
>starting and ending addresses of forwarding addresses, but forgot that
>there might be no addresses set at all.
>
>Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>---
> src/conf/network_conf.c                            | 22 +++++++++++++++++++---
> ....xml => nat-network-forward-nat-no-address.xml} |  1 -
> ....xml => nat-network-forward-nat-no-address.xml} |  1 -
> tests/networkxml2xmltest.c                         |  1 +
> 4 files changed, 20 insertions(+), 5 deletions(-)
> copy tests/networkxml2xmlin/{nat-network-forward-nat-address.xml => nat-network-forward-nat-no-address.xml} (93%)
> copy tests/networkxml2xmlout/{nat-network-forward-nat-address.xml => nat-network-forward-nat-no-address.xml} (93%)
>
>diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
>index 374d723788e1..f9d894b12046 100644
>--- a/src/conf/network_conf.c
>+++ b/src/conf/network_conf.c
>@@ -1731,9 +1731,25 @@ virNetworkForwardNatDefParseXML(const char *networkName,
>         goto cleanup;
>     }
>
>-    /* verify that start <= end */
>-    if (virSocketAddrGetRange(&def->addr.start, &def->addr.end, NULL, 0) < 0)
>-        goto cleanup;
>+    if (addrStart && addrEnd) {
>+        /* verify that start <= end */
>+        if (virSocketAddrGetRange(&def->addr.start, &def->addr.end, NULL, 0) < 0)
>+            goto cleanup;
>+    } else {
>+        if (addrStart) {
>+            virReportError(VIR_ERR_XML_ERROR,
>+                           _("Only start address '%s' specified in <nat> in "
>+                             "<forward> in network '%s'"),
>+                           addrStart, networkName);
>+            goto cleanup;
>+        }
>+        if (addrEnd) {
>+            virReportError(VIR_ERR_XML_ERROR,
>+                           _("Only end address '%s' specified in <nat> in "
>+                             "<forward> in network '%s'"),
>+                           addrEnd, networkName);

I see the missing 'goto cleanup;' now, consider this squashed in as it
already is in my tree:

diff --git c/src/conf/network_conf.c w/src/conf/network_conf.c
index f9d894b12046..c1cbd76c6807 100644
--- c/src/conf/network_conf.c
+++ w/src/conf/network_conf.c
@@ -1748,6 +1748,7 @@ virNetworkForwardNatDefParseXML(const char *networkName,
                            _("Only end address '%s' specified in <nat> in "
                              "<forward> in network '%s'"),
                            addrEnd, networkName);
+            goto cleanup;
         }
     }

--

Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150811/7aa4441d/attachment-0001.sig>


More information about the libvir-list mailing list