Skip to content
Snippets Groups Projects
Commit 73060b45 authored by Yang Tse's avatar Yang Tse
Browse files

backport fix for failures to reject certain malformed literals

parent c76d9395
No related branches found
No related tags found
No related merge requests found
......@@ -74,9 +74,6 @@ Curl_inet_pton(int af, const char *src, void *dst)
case AF_INET:
return (inet_pton4(src, (unsigned char *)dst));
#ifdef ENABLE_IPV6
#ifndef AF_INET6
#define AF_INET6 (AF_MAX+1) /* just to let this compile */
#endif
case AF_INET6:
return (inet_pton6(src, (unsigned char *)dst));
#endif
......@@ -114,6 +111,8 @@ inet_pton4(const char *src, unsigned char *dst)
if((pch = strchr(digits, ch)) != NULL) {
unsigned int val = *tp * 10 + (unsigned int)(pch - digits);
if(saw_digit && *tp == 0)
return (0);
if(val > 255)
return (0);
*tp = (unsigned char)val;
......@@ -134,7 +133,6 @@ inet_pton4(const char *src, unsigned char *dst)
}
if(octets < 4)
return (0);
/* bcopy(tmp, dst, INADDRSZ); */
memcpy(dst, tmp, INADDRSZ);
return (1);
}
......@@ -181,9 +179,8 @@ inet_pton6(const char *src, unsigned char *dst)
if(pch != NULL) {
val <<= 4;
val |= (pch - xdigits);
if(val > 0xffff)
if(++saw_xdigit > 4)
return (0);
saw_xdigit = 1;
continue;
}
if(ch == ':') {
......@@ -224,6 +221,8 @@ inet_pton6(const char *src, unsigned char *dst)
const long n = tp - colonp;
long i;
if(tp == endp)
return (0);
for (i = 1; i <= n; i++) {
endp[- i] = colonp[n - i];
colonp[n - i] = 0;
......@@ -232,7 +231,6 @@ inet_pton6(const char *src, unsigned char *dst)
}
if(tp != endp)
return (0);
/* bcopy(tmp, dst, IN6ADDRSZ); */
memcpy(dst, tmp, IN6ADDRSZ);
return (1);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment