aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--resolv/inet_addr.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 6883430..60ba9d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1999-03-05 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * resolv/inet_addr.c (inet_aton): Don't allow componets >
+ 255. Patch by Bruno Haible <haible@ilog.fr> [PR libc/1010].
+
1999-03-05 Geoff Keating <geoffk@ozemail.com.au>
* sysdeps/powerpc/dl-machine.c (__elf_machine_runtime_setup):
diff --git a/resolv/inet_addr.c b/resolv/inet_addr.c
index 0d3ba06..a5667eb 100644
--- a/resolv/inet_addr.c
+++ b/resolv/inet_addr.c
@@ -187,19 +187,20 @@ inet_aton(cp, addr)
break;
case 2: /* a.b -- 8.24 bits */
- if (val > 0xffffff)
+ if (parts[0] > 0xff || val > 0xffffff)
goto ret_0;
val |= parts[0] << 24;
break;
case 3: /* a.b.c -- 8.8.16 bits */
- if (val > 0xffff)
+ if (parts[0] > 0xff || parts[1] > 0xff || val > 0xffff)
goto ret_0;
val |= (parts[0] << 24) | (parts[1] << 16);
break;
case 4: /* a.b.c.d -- 8.8.8.8 bits */
- if (val > 0xff)
+ if (parts[0] > 0xff || parts[1] > 0xff || parts[2] > 0xff
+ || val > 0xff)
goto ret_0;
val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
break;