fixed bug #46072: ip4addr_aton() does not check the number range of all address parts

This commit is contained in:
goldsimon
2015-09-30 14:15:36 +02:00
parent f89e859415
commit 927b72abd2
2 changed files with 13 additions and 0 deletions

View File

@@ -230,6 +230,9 @@ ip4addr_aton(const char *cp, ip4_addr_t *addr)
if (val > 0xffffffUL) {
return 0;
}
if (parts[0] > 0xff) {
return 0;
}
val |= parts[0] << 24;
break;
@@ -237,6 +240,9 @@ ip4addr_aton(const char *cp, ip4_addr_t *addr)
if (val > 0xffff) {
return 0;
}
if ((parts[0] > 0xff) || (parts[1] > 0xff)) {
return 0;
}
val |= (parts[0] << 24) | (parts[1] << 16);
break;
@@ -244,6 +250,9 @@ ip4addr_aton(const char *cp, ip4_addr_t *addr)
if (val > 0xff) {
return 0;
}
if ((parts[0] > 0xff) || (parts[1] > 0xff) || (parts[2] > 0xff)) {
return 0;
}
val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
break;
default: