]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: Fix mask for 172.16.0.0 private address range
authorJiri Denemark <jdenemar@redhat.com>
Wed, 30 Jan 2013 11:01:01 +0000 (12:01 +0100)
committerLaine Stump <laine@laine.org>
Sun, 3 Feb 2013 01:45:45 +0000 (20:45 -0500)
https://bugzilla.redhat.com/show_bug.cgi?id=905708

Only the first 12 bits should be set in the mask for this range. All
addresses between 172.16.0.0 and 172.31.255.255 are private.
(cherry picked from commit 6405713f2ab9243db7d856914aaefbd4f9747daa)

src/util/virsocketaddr.c

index 66ddb6180570c272d511a787283205c99c9ae4b4..d5c1ff37aecd2d9a0eaa8eaeafee438a99778f3b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009-2012 Red Hat, Inc.
+ * Copyright (C) 2009-2013 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -199,7 +199,7 @@ virSocketAddrEqual(const virSocketAddrPtr s1, const virSocketAddrPtr s2)
  *
  * Return true if this address is in its family's defined
  * "private/local" address space. For IPv4, private addresses are in
- * the range of 192.168.0.0/16, 172.16.0.0/16, or 10.0.0.0/8.  For
+ * the range of 192.168.0.0/16, 172.16.0.0/12, or 10.0.0.0/8.  For
  * IPv6, local addresses are in the range of FC00::/7 or FEC0::/10
  * (that last one is deprecated, but still in use).
  *
@@ -215,7 +215,7 @@ virSocketAddrIsPrivate(const virSocketAddrPtr addr)
        val = ntohl(addr->data.inet4.sin_addr.s_addr);
 
        return ((val & 0xFFFF0000) == ((192L << 24) + (168 << 16)) ||
-               (val & 0xFFFF0000) == ((172L << 24) + (16  << 16)) ||
+               (val & 0xFFF00000) == ((172L << 24) + (16  << 16)) ||
                (val & 0xFF000000) == ((10L  << 24)));
 
     case AF_INET6: