Author: madcoder Date: 2007-05-15 12:30:58 +0000 (Tue, 15 May 2007) New Revision: 2225
Added: glibc-package/branches/glibc-branch-etch/debian/patches/any/cvs-vfprintf-stack-smashing.diff Log: missing file Added: glibc-package/branches/glibc-branch-etch/debian/patches/any/cvs-vfprintf-stack-smashing.diff =================================================================== --- glibc-package/branches/glibc-branch-etch/debian/patches/any/cvs-vfprintf-stack-smashing.diff (rev 0) +++ glibc-package/branches/glibc-branch-etch/debian/patches/any/cvs-vfprintf-stack-smashing.diff 2007-05-15 12:30:58 UTC (rev 2225) @@ -0,0 +1,55 @@ +2007-05-02 Jakub Jelinek <[EMAIL PROTECTED]> + + * stdio-common/vfprintf.c (process_string_arg): Use a VLA rather than + fixed length array for ignore. + +2007-04-30 Ulrich Drepper <[EMAIL PROTECTED]> + + [BZ #4438] + * stdio-common/vfprintf.c (process_string_arg): Don't overflow the + stack for large precisions. + +=================================================================== +RCS file: /cvs/glibc/libc/stdio-common/vfprintf.c,v +retrieving revision 1.135 +retrieving revision 1.137 +Index: glibc-2.5/stdio-common/vfprintf.c +=================================================================== +--- glibc-2.5.orig/stdio-common/vfprintf.c 2006-05-02 22:25:15.000000000 +0200 ++++ glibc-2.5/stdio-common/vfprintf.c 2007-05-04 11:26:16.049828248 +0200 +@@ -1159,19 +1159,26 @@ + else \ + { \ + /* In case we have a multibyte character set the \ +- situation is more compilcated. We must not copy \ ++ situation is more complicated. We must not copy \ + bytes at the end which form an incomplete character. */\ +- wchar_t ignore[prec]; \ ++ size_t ignore_size = (unsigned) prec > 1024 ? 1024 : prec;\ ++ wchar_t ignore[ignore_size]; \ + const char *str2 = string; \ +- mbstate_t ps; \ ++ const char *strend = string + prec; \ ++ if (strend < string) \ ++ strend = (const char *) UINTPTR_MAX; \ + \ ++ mbstate_t ps; \ + memset (&ps, '\0', sizeof (ps)); \ +- if (__mbsnrtowcs (ignore, &str2, prec, prec, &ps) \ +- == (size_t) -1) \ +- { \ +- done = -1; \ +- goto all_done; \ +- } \ ++ \ ++ while (str2 != NULL && str2 < strend) \ ++ if (__mbsnrtowcs (ignore, &str2, strend - str2, \ ++ ignore_size, &ps) == (size_t) -1) \ ++ { \ ++ done = -1; \ ++ goto all_done; \ ++ } \ ++ \ + if (str2 == NULL) \ + len = strlen (string); \ + else \ -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]