From: Todd C. Miller Date: Thu, 13 Dec 2001 01:07:25 +0000 (+0000) Subject: Fix CIDR -> in_addr_t conversion. X-Git-Tag: SUDO_1_6_4~119 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4572e80469de2384083635ee2ab68eb4ed4458bd;p=sudo Fix CIDR -> in_addr_t conversion. --- diff --git a/parse.c b/parse.c index a6db514e1..5934e7440 100644 --- a/parse.c +++ b/parse.c @@ -377,8 +377,14 @@ addr_matches(n) addr.s_addr = inet_addr(n); if (strchr(m, '.')) mask.s_addr = inet_addr(m); - else - mask.s_addr = (1 << atoi(m)) - 1; /* XXX - better way? */ + else { + i = 32 - atoi(m); + mask.s_addr = 0xffffffff; + mask.s_addr >>= i; + mask.s_addr <<= i; + mask.s_addr = htonl(mask.s_addr); + + } *(m - 1) = '/'; for (i = 0; i < num_interfaces; i++)