Hi,

there is a small issue in how the netmask is parsed (actually, an
undocumented feature which would allow this to be used for IPv6 is broken),
see attached patch. Problem is that inet_aton (at least on my Linux box)
kind of succeeds if it is just passed a number (instead of an IP address).


Christof

-- 

http://cmeerw.org                              sip:cmeerw at cmeerw.org
mailto:cmeerw at cmeerw.org                   xmpp:cmeerw at cmeerw.org
diff -ur jabberd-2.1.16.orig/util/access.c jabberd-2.1.16/util/access.c
--- jabberd-2.1.16.orig/util/access.c	2006-04-16 22:42:32.000000000 +0200
+++ jabberd-2.1.16/util/access.c	2007-09-23 21:31:26.000000000 +0200
@@ -44,7 +44,11 @@
     struct in_addr legacy_mask;
     int netsize;
 
-    if(inet_aton(mask, &legacy_mask))
+#ifndef HAVE_INET_PTON
+    if(strchr(mask, '.') && inet_aton(mask, &legacy_mask))
+#else
+    if(inet_pton(AF_INET, mask, &legacy_mask.s_addr) > 0)
+#endif
     {
         /* netmask has been given in dotted decimal form */
         int temp = ntohl(legacy_mask.s_addr);
_______________________________________________
Jabberd2 mailing list
Jabberd2@lists.xiaoka.com
http://lists.xiaoka.com/listinfo.cgi/jabberd2-xiaoka.com

Reply via email to