X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/56c473b795bad9d29430bf794f9204bd096c9c3d..1db8b61de7fd31b9c7b02918e6c194255979f030:/access.c diff --git a/access.c b/access.c index f1a8bd75..050e8cc4 100644 --- a/access.c +++ b/access.c @@ -34,7 +34,7 @@ static int match_hostname(char *host, char *tok) 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; @@ -68,6 +68,7 @@ static int match_address(char *addr, char *tok) 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; @@ -86,6 +87,9 @@ static int access_match(char *list, char *addr, char *host) if (!list2) out_of_memory("access_match"); + strlower(list2); + if (host) strlower(host); + for (tok=strtok(list2," ,\t"); tok; tok=strtok(NULL," ,\t")) { if (match_hostname(host, tok) || match_address(addr, tok)) { free(list2);