[asterisk-commits] mmichelson: tag 1.6.2.5 r248849 - /tags/1.6.2.5/main/acl.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Feb 25 13:41:26 CST 2010


Author: mmichelson
Date: Thu Feb 25 13:41:23 2010
New Revision: 248849

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=248849
Log:
Fix error where "/0" CIDR notation could be unpredictable.

AST-2010-003


Modified:
    tags/1.6.2.5/main/acl.c

Modified: tags/1.6.2.5/main/acl.c
URL: http://svnview.digium.com/svn/asterisk/tags/1.6.2.5/main/acl.c?view=diff&rev=248849&r1=248848&r2=248849
==============================================================================
--- tags/1.6.2.5/main/acl.c (original)
+++ tags/1.6.2.5/main/acl.c Thu Feb 25 13:41:23 2010
@@ -298,7 +298,14 @@
 
 		if (!strchr(nm, '.')) {
 			if ((sscanf(nm, "%30d", &x) == 1) && (x >= 0) && (x <= 32)) {
-				ha->netmask.s_addr = htonl(0xFFFFFFFF << (32 - x));
+				if (x == 0) {
+					/* This is special-cased to prevent unpredictable
+					 * behavior of shifting left 32 bits
+					 */
+					ha->netmask.s_addr = 0;
+				} else {
+					ha->netmask.s_addr = htonl(0xFFFFFFFF << (32 - x));
+				}
 			} else {
 				ast_log(LOG_WARNING, "Invalid CIDR in %s\n", stuff);
 				ast_free(ha);




More information about the asterisk-commits mailing list