r6205 - glibc-package/trunk/debian/patches/any
Author: aurel32
Date: 2014-07-10 20:58:25 +0000 (Thu, 10 Jul 2014)
New Revision: 6205
Added:
glibc-package/trunk/debian/patches/any/cvs-setlocale-alloca.diff
Log:
Add missing file
Added: glibc-package/trunk/debian/patches/any/cvs-setlocale-alloca.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-setlocale-alloca.diff (rev 0)
+++ glibc-package/trunk/debian/patches/any/cvs-setlocale-alloca.diff 2014-07-10 20:58:25 UTC (rev 6205)
@@ -0,0 +1,50 @@
+2014-07-02 Florian Weimer <fweimer@redhat.com>
+
+ * locale/setlocale.c (setlocale): Use strdup for allocating
+ composite name copy.
+
+--- a/locale/setlocale.c
++++ b/locale/setlocale.c
+@@ -272,6 +272,8 @@ setlocale (int category, const char *locale)
+ of entries of the form `CATEGORY=VALUE'. */
+ const char *newnames[__LC_LAST];
+ struct __locale_data *newdata[__LC_LAST];
++ /* Copy of the locale argument, for in-place splitting. */
++ char *locale_copy = NULL;
+
+ /* Set all name pointers to the argument name. */
+ for (category = 0; category < __LC_LAST; ++category)
+@@ -281,7 +283,13 @@ setlocale (int category, const char *locale)
+ if (__builtin_expect (strchr (locale, ';') != NULL, 0))
+ {
+ /* This is a composite name. Make a copy and split it up. */
+- char *np = strdupa (locale);
++ locale_copy = strdup (locale);
++ if (__glibc_unlikely (locale_copy == NULL))
++ {
++ __libc_rwlock_unlock (__libc_setlocale_lock);
++ return NULL;
++ }
++ char *np = locale_copy;
+ char *cp;
+ int cnt;
+
+@@ -299,6 +307,7 @@ setlocale (int category, const char *locale)
+ {
+ error_return:
+ __libc_rwlock_unlock (__libc_setlocale_lock);
++ free (locale_copy);
+
+ /* Bogus category name. */
+ ERROR_RETURN;
+@@ -391,8 +400,9 @@ setlocale (int category, const char *locale)
+ /* Critical section left. */
+ __libc_rwlock_unlock (__libc_setlocale_lock);
+
+- /* Free the resources (the locale path variable). */
++ /* Free the resources. */
+ free (locale_path);
++ free (locale_copy);
+
+ return composite;
+ }
Reply to: