summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2016-06-16 21:16:32 +0000
committerTom Lane2016-06-16 21:16:53 +0000
commitf66e0fec386754e85edb3355b1d000c99a38f5cb (patch)
treefb66bcfdff5312c9cc520a0367502c3611a3c54d
parent23ed284a5dda5286bd91bb601f30e5e6fae478af (diff)
Fix validation of overly-long IPv6 addresses.
The inet/cidr types sometimes failed to reject IPv6 inputs with too many colon-separated fields, instead translating them to '::/0'. This is the result of a thinko in the original ISC code that seems to be as yet unreported elsewhere. Per bug #14198 from Stefan Kaltenbrunner. Report: <20160616182222.5798.959@wrigleys.postgresql.org>
-rw-r--r--src/backend/utils/adt/inet_net_pton.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/utils/adt/inet_net_pton.c b/src/backend/utils/adt/inet_net_pton.c
index 9064eaf64b0..b8fa7d2bccf 100644
--- a/src/backend/utils/adt/inet_net_pton.c
+++ b/src/backend/utils/adt/inet_net_pton.c
@@ -496,7 +496,7 @@ inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size)
else if (*src == '\0')
goto enoent;
if (tp + NS_INT16SZ > endp)
- return (0);
+ goto enoent;
*tp++ = (u_char) (val >> 8) & 0xff;
*tp++ = (u_char) val & 0xff;
saw_xdigit = 0;