postgres.git / summary / log / commit / refs
commit 7b97dafa2a885b968924604e58e030aebfd96b9f
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu Jun 16 21:16:32 2016 +0000
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>
src/backend/utils/adt/inet_net_pton.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/backend/utils/adt/inet_net_pton.c b/src/backend/utils/adt/inet_net_pton.c
index 1d32d2f04f6..20e6efe7495 100644
--- a/src/backend/utils/adt/inet_net_pton.c
+++ b/src/backend/utils/adt/inet_net_pton.c
@@ -495,7 +495,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;
[parent: bdf39b2c577a]