--- a/src/config.c
+++ b/src/config.c
@@ -357,15 +357,18 @@ struct SubnetList *parseSubnetAddress(ch
     tmpStr = strtok(NULL, "/");
     if(tmpStr != NULL) {
         int bitcnt = atoi(tmpStr);
-        if(bitcnt <= 0 || bitcnt > 32) {
+        if(bitcnt < 0 || bitcnt > 32) {
             my_log(LOG_WARNING, 0, "The bits part of the address is invalid : %d.",tmpStr);
             return NULL;
         }
 
-        mask <<= (32 - bitcnt);
+		if (bitcnt == 0)
+			mask = 0;
+		else
+	        mask <<= (32 - bitcnt);
     }
 
-    if(addr == -1 || addr == 0) {
+    if(addr == -1) {
         my_log(LOG_WARNING, 0, "Unable to parse address token '%s'.", addrstr);
         return NULL;
     }
