static int match_address(char *addr, char *tok)
{
char *p;
- unsigned long a, t, mask = ~0;
+ unsigned long a, t, mask = (unsigned long)~0;
if (!addr || !*addr) return 0;
- if (!isdigit(tok[0])) return 0;
+ if (!isdigit(* (unsigned char *) tok)) return 0;
p = strchr(tok,'/');
if (p) *p = 0;
mask = ntohl(mask);
} else {
int bits = atoi(p+1);
+ if (bits == 0) return 1;
if (bits <= 0 || bits > 32) {
rprintf(FERROR,"malformed mask in %s\n", tok);
return 0;