From: Maya Rashish Date: Fri, 30 Jun 2017 15:51:49 +0000 (+0100) Subject: Fix a runtime shift error. X-Git-Tag: v7.0.0-rc2~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54a2378b86a747aebc47c7e4b5e75c7db66ebf74;p=thirdparty%2Fdhcpcd.git Fix a runtime shift error. --- diff --git a/src/sa.c b/src/sa.c index 403c9837..5cdff18e 100644 --- a/src/sa.c +++ b/src/sa.c @@ -197,18 +197,18 @@ sa_toprefix(const struct sockaddr *sa) case AF_INET: { const struct sockaddr_in *sin; - int mask; + uint32_t mask; sin = satocsin(sa); if (sin->sin_addr.s_addr == INADDR_ANY) { prefix = 0; break; } - mask = (int)ntohl(sin->sin_addr.s_addr); - prefix = 33 - ffs(mask); /* 33 - (1 .. 32) -> 32 .. 1 */ + mask = ntohl(sin->sin_addr.s_addr); + prefix = 33 - ffs((int)mask); /* 33 - (1 .. 32) -> 32 .. 1 */ if (prefix < 32) { /* more than 1 bit in mask */ /* check for non-contig netmask */ - if ((mask ^ (((1 << prefix)-1) << (32 - prefix))) != 0){ + if ((mask^(((1U << prefix)-1) << (32 - prefix))) != 0) { errno = EINVAL; return -1; /* noncontig, no pfxlen */ }