diff options
author | Lukas Nykryn <lnykryn@redhat.com> | 2016-05-30 13:40:53 +0200 |
---|---|---|
committer | Dee'Kej <deekej@linuxmail.org> | 2016-11-10 16:56:42 +0100 |
commit | fdad48ace9be9bd8f2dc1e969b7f6445fcada16e (patch) | |
tree | 19a131c5c8df42222e3820eaaf4c6241f09e415b /src/ipcalc.c | |
parent | 40e9e95a50891e04418fb5c0cbbe6a652ca784ea (diff) | |
download | initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar.gz initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar.bz2 initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.tar.xz initscripts-fdad48ace9be9bd8f2dc1e969b7f6445fcada16e.zip |
ipcalc: detect invalid mask
Resolves: RHBZ #1377986
Diffstat (limited to 'src/ipcalc.c')
-rw-r--r-- | src/ipcalc.c | 7 |
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; + } } } |