mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-06 15:51:41 +00:00
Do not fail hard when rev-server has a non-zero final address part
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
1 parent
267ab619c4
commit
ed4e7defd7
1 file changed
+5
-13
+5
-13
@@ -963,13 +963,9 @@ static char *domain_rev4(int from_file, char *server, struct in_addr *addr4, int
|
|||||||
|
|
||||||
if (size > 32 || size < 1)
|
if (size > 32 || size < 1)
|
||||||
return _("bad IPv4 prefix length");
|
return _("bad IPv4 prefix length");
|
||||||
|
|
||||||
for (i = 0; i < addrbytes; i++)
|
/* Zero out last address bits according to CIDR mask */
|
||||||
if (((u8 *)addr4)[3-i] != 0)
|
((u8 *)addr4)[3-addrbytes] &= ~((1 << addrbits)-1);
|
||||||
break;
|
|
||||||
|
|
||||||
if (i != addrbytes || (((u8 *)addr4)[3-addrbytes] & ((1 << addrbits) - 1)) != 0)
|
|
||||||
return _("address part not zero");
|
|
||||||
|
|
||||||
size = size & ~0x7;
|
size = size & ~0x7;
|
||||||
|
|
||||||
@@ -1026,13 +1022,9 @@ static char *domain_rev6(int from_file, char *server, struct in6_addr *addr6, in
|
|||||||
|
|
||||||
if (size > 128 || size < 1)
|
if (size > 128 || size < 1)
|
||||||
return _("bad IPv6 prefix length");
|
return _("bad IPv6 prefix length");
|
||||||
|
|
||||||
for (i = 0; i < addrbytes; i++)
|
|
||||||
if (addr6->s6_addr[15-i] != 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (i != addrbytes || (addr6->s6_addr[15-addrbytes] & ((1 << addrbits) - 1)) != 0)
|
/* Zero out last address bits according to CIDR mask */
|
||||||
return _("address part not zero");
|
addr6->s6_addr[15-addrbytes] &= ~((1 << addrbits) - 1);
|
||||||
|
|
||||||
size = size & ~0x3;
|
size = size & ~0x3;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user