isinetaddr4: treat last octet as less of a special case

This commit is contained in:
0x1eef 2023-09-20 12:20:26 -03:00
parent ae035800d3
commit 760852b6dc

View file

@ -22,14 +22,11 @@ isinetaddr4(const char *str)
buf[MAX_BUFLEN] = '\0'; buf[MAX_BUFLEN] = '\0';
for (size_t l = 0; l < len; l++) { for (size_t l = 0; l < len; l++) {
if (str[l] == SEP) { if (str[l] == SEP) {
if (buflen == 0) { if (octets == MAX_OCTETS || buflen == 0) {
return 0;
} else if (!in_range(buf)) {
return 0; return 0;
} else { } else {
buflen = 0; buflen = 0;
bzero(buf, MAX_BUFLEN); bzero(buf, MAX_BUFLEN);
octets++;
} }
} else if (isdigit(str[l])) { } else if (isdigit(str[l])) {
if (buflen == MAX_BUFLEN) { if (buflen == MAX_BUFLEN) {
@ -37,13 +34,19 @@ isinetaddr4(const char *str)
} else { } else {
buf[buflen++] = str[l]; buf[buflen++] = str[l];
digits++; digits++;
if (!in_range(buf)) {
return 0;
}
} }
} else { } else {
return 0; return 0;
} }
if (str[l-1] == SEP) {
octets++;
}
} }
if (octets == MAX_OCTETS) { if (octets == MAX_OCTETS) {
return digits <= MAX_DIGITLEN && buflen > 0 && in_range(buf); return digits <= MAX_DIGITLEN;
} else { } else {
return 0; return 0;
} }