resolv: ns_name_pton should report trailing \ as error [BZ #22413]

This commit is contained in:
Florian Weimer 2017-11-11 11:41:45 +01:00
parent e2a9fca810
commit 9e0ad3049d
3 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,9 @@
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.
2017-11-11 Florian Weimer <fweimer@redhat.com> 2017-11-11 Florian Weimer <fweimer@redhat.com>
* resolv/tst-ns_name_pton.c: New file. * resolv/tst-ns_name_pton.c: New file.

View File

@ -222,6 +222,11 @@ ns_name_pton(const char *src, u_char *dst, size_t dstsiz)
} }
*bp++ = (u_char)c; *bp++ = (u_char)c;
} }
if (escaped) {
/* Trailing backslash. */
__set_errno (EMSGSIZE);
return -1;
}
c = (bp - label - 1); c = (bp - label - 1);
if ((c & NS_CMPRSFLGS) != 0) { /*%< Label too big. */ if ((c & NS_CMPRSFLGS) != 0) { /*%< Label too big. */
__set_errno (EMSGSIZE); __set_errno (EMSGSIZE);

View File

@ -127,6 +127,13 @@ static const struct test_case tests[] =
"\377\377", NULL, }, "\377\377", NULL, },
{ STRING63OCT "." STRING63OCT "." STRING63OCT "." STRING60OCT { STRING63OCT "." STRING63OCT "." STRING63OCT "." STRING60OCT
"\377\377\377", NULL, }, "\377\377\377", NULL, },
{ "\\", NULL, },
{ "\\\\", "\\\\", false },
{ "\\\\.", "\\\\", true },
{ "\\\\\\", NULL, },
{ "a\\", NULL, },
{ "a.\\", NULL, },
{ "a.b\\", NULL, },
}; };
static int static int