aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Nykryn <lnykryn@redhat.com>2016-05-30 13:40:53 +0200
committerDee'Kej <deekej@linuxmail.org>2016-11-10 16:56:42 +0100
commitfdad48ace9be9bd8f2dc1e969b7f6445fcada16e (patch)
tree19a131c5c8df42222e3820eaaf4c6241f09e415b
parent40e9e95a50891e04418fb5c0cbbe6a652ca784ea (diff)
downloadinitscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar
initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar.gz
initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar.bz2
initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar.xz
initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.zip
ipcalc: detect invalid mask
Resolves: RHBZ #1377986
-rw-r--r--src/ipcalc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ipcalc.c b/src/ipcalc.c
index 83eb871d..bf4fa757 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;
+ }
}
}