From 4714cec7e8367a7618b168d0db4bc085dbfaac8a Mon Sep 17 00:00:00 2001 From: root Date: Mon, 11 Jun 2012 00:02:18 +0000 Subject: Mon Jun 11 00:02:18 UTC 2012 --- ....15-__libc_res_nquerydomain-out-of-bounds.patch | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 staging/glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch (limited to 'staging/glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch') diff --git a/staging/glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch b/staging/glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch new file mode 100644 index 000000000..6f0a0398f --- /dev/null +++ b/staging/glibc/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch @@ -0,0 +1,24 @@ +diff --git a/resolv/res_query.c b/resolv/res_query.c +index 947c651..abccd4a 100644 +--- a/resolv/res_query.c ++++ b/resolv/res_query.c +@@ -556,12 +556,16 @@ __libc_res_nquerydomain(res_state statp, + * copy without '.' if present. + */ + n = strlen(name); +- if (n >= MAXDNAME) { ++ ++ /* Decrement N prior to checking it against MAXDNAME ++ so that we detect a wrap to SIZE_MAX and return ++ a reasonable error. */ ++ n--; ++ if (n >= MAXDNAME - 1) { + RES_SET_H_ERRNO(statp, NO_RECOVERY); + return (-1); + } +- n--; +- if (n >= 0 && name[n] == '.') { ++ if (name[n] == '.') { + strncpy(nbuf, name, n); + nbuf[n] = '\0'; + } else -- cgit v1.2.3-54-g00ecf