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 COMMITTED] resolv: ns_name_pton should report trailing \ as error [BZ #22413]


2017-11-11  Florian Weimer  <fweimer@redhat.com>

	[BZ #22413]
	* resolv/ns_name.c (ns_name_pton): Treat trailing backslash as error.
	* resolv/tst-ns_name_pton.c (tests): Add trailing backslash tests.

diff --git a/resolv/ns_name.c b/resolv/ns_name.c
index 08a75e2fe0..73213fee2d 100644
--- a/resolv/ns_name.c
+++ b/resolv/ns_name.c
@@ -222,6 +222,11 @@ ns_name_pton(const char *src, u_char *dst, size_t dstsiz)
 		}
 		*bp++ = (u_char)c;
 	}
+	if (escaped) {
+		/* Trailing backslash.  */
+		__set_errno (EMSGSIZE);
+		return -1;
+	}
 	c = (bp - label - 1);
 	if ((c & NS_CMPRSFLGS) != 0) {		/*%< Label too big. */
 		__set_errno (EMSGSIZE);
diff --git a/resolv/tst-ns_name_pton.c b/resolv/tst-ns_name_pton.c
index 879d97c9d3..73bdb05e08 100644
--- a/resolv/tst-ns_name_pton.c
+++ b/resolv/tst-ns_name_pton.c
@@ -127,6 +127,13 @@ static const struct test_case tests[] =
       "\377\377", NULL, },
     { STRING63OCT "." STRING63OCT "." STRING63OCT "." STRING60OCT
       "\377\377\377", NULL, },
+    { "\\", NULL, },
+    { "\\\\", "\\\\", false },
+    { "\\\\.", "\\\\", true },
+    { "\\\\\\", NULL, },
+    { "a\\", NULL, },
+    { "a.\\", NULL, },
+    { "a.b\\", NULL, },
   };
 
 static int


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