From: Florian Weimer Date: Sat, 11 Nov 2017 10:41:45 +0000 (+0100) Subject: resolv: ns_name_pton should report trailing \ as error [BZ #22413] X-Git-Tag: upstream/2.30~2192 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9e0ad3049dbae88d615bfb038e53bf365a39a634;p=platform%2Fupstream%2Fglibc.git resolv: ns_name_pton should report trailing \ as error [BZ #22413] --- diff --git a/ChangeLog b/ChangeLog index 5ddb6fd..4739e62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2017-11-11 Florian Weimer + [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. + +2017-11-11 Florian Weimer + * resolv/tst-ns_name_pton.c: New file. * resolv/Makefile (tests): Add tst-ns_name_pton. (tst-ns_name_pton): Link against libresolv. diff --git a/resolv/ns_name.c b/resolv/ns_name.c index 08a75e2..73213fe 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 879d97c..73bdb05 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