This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] have inet_network() reject "0x"


the inet_network() function currently returns 0 for "0x" rather than 
INADDR_NONE.  attached patch fixes that by resetting digit to 0 thus forcing 
subsequent parsing to get digit to be 1.
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

2007-09-15  Mike Frysinger  <vapier@gentoo.org>

	* inet/inet_net.c: Reset digit to 0 for inputs starting with "0x".
	* inet/tst-network.c (tests): Add edge case tests for "0", "0x", "0x0".

Index: inet/inet_net.c
===================================================================
RCS file: /cvs/glibc/libc/inet/inet_net.c,v
retrieving revision 1.10
diff -u -p -r1.10 inet_net.c
--- inet/inet_net.c	12 Feb 2000 07:38:04 -0000	1.10
+++ inet/inet_net.c	15 Sep 2007 06:14:59 -0000
@@ -55,7 +55,7 @@ again:
 	if (*cp == '0')
 		digit = 1, base = 8, cp++;
 	if (*cp == 'x' || *cp == 'X')
-		base = 16, cp++;
+		digit = 0, base = 16, cp++;
 	while ((c = *cp) != 0) {
 		if (isdigit(c)) {
 			if (base == 8 && (c == '8' || c == '9'))
Index: inet/tst-network.c
===================================================================
RCS file: /cvs/glibc/libc/inet/tst-network.c,v
retrieving revision 1.4
diff -u -p -r1.4 tst-network.c
--- inet/tst-network.c	15 Sep 2007 04:10:38 -0000	1.4
+++ inet/tst-network.c	15 Sep 2007 06:14:59 -0000
@@ -34,7 +34,10 @@ struct
   {"1.0", 0x100},
   {"1", 0x1},
   {"192.168.0.0", 0xC0A80000},
+  {"0", 0},
+  {"0x0", 0},
   /* Now some invalid addresses.  */
+  {"0x", INADDR_NONE},
   {"141.30.225.2800", INADDR_NONE},
   {"141.76.1.1.1", INADDR_NONE},
   {"141.76.1.11.", INADDR_NONE},

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]