From ee0eb388018636443799a9fa88eee47c86ab1565 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Mon, 30 May 2016 13:40:53 +0200 Subject: ipcalc: detect invalid mask Resolves: #1318322 --- src/ipcalc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ipcalc.c b/src/ipcalc.c index 9108e4c2..2efb339f 100644 --- a/src/ipcalc.c +++ b/src/ipcalc.c @@ -107,6 +107,8 @@ int mask2prefix(struct in_addr mask) uint32_t saddr = ntohl(mask.s_addr); for (count=0; saddr > 0; count++) { + if (!((1 << 31) & saddr)) + return -1; saddr=saddr << 1; } @@ -339,6 +341,11 @@ int main(int argc, const char **argv) { return 1; } prefix = mask2prefix(netmask); + if (prefix < 0 ) { + if (!beSilent) + fprintf(stderr, "ipcalc: bad netmask: %s\n", netmaskStr); + return 1; + } } } -- cgit v1.2.1