aboutsummaryrefslogtreecommitdiffstats
path: root/main/fortify-headers/mbsnrtowcs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/fortify-headers/mbsnrtowcs.patch')
-rw-r--r--main/fortify-headers/mbsnrtowcs.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/main/fortify-headers/mbsnrtowcs.patch b/main/fortify-headers/mbsnrtowcs.patch
new file mode 100644
index 0000000000..92006d86b4
--- /dev/null
+++ b/main/fortify-headers/mbsnrtowcs.patch
@@ -0,0 +1,69 @@
+From 73839e34a644fc95a9bc44603025b75aee74ef5b Mon Sep 17 00:00:00 2001
+From: sin <sin@2f30.org>
+Date: Wed, 1 Apr 2015 12:41:08 +0100
+Subject: [PATCH] Add feature-test guards for mbsnrtowcs() and wcsnrtombs()
+
+---
+ include/wchar.h | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/include/wchar.h b/include/wchar.h
+index aba1bd8..e2d56e8 100644
+--- a/include/wchar.h
++++ b/include/wchar.h
+@@ -11,7 +11,6 @@ extern "C" {
+ #endif
+
+ #undef fgetws
+-#undef mbsnrtowcs
+ #undef mbsrtowcs
+ #undef mbstowcs
+ #undef wcrtomb
+@@ -19,7 +18,6 @@ extern "C" {
+ #undef wcscpy
+ #undef wcsncat
+ #undef wcsncpy
+-#undef wcsnrtombs
+ #undef wcsrtombs
+ #undef wcstombs
+ #undef wctomb
+@@ -38,6 +36,9 @@ wchar_t *fgetws(wchar_t *s, int n, FILE *fp)
+ return __fgetws_orig(s, n, fp);
+ }
+
++#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
++ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
++#undef mbsnrtowcs
+ __typeof__(mbsnrtowcs) __mbsnrtowcs_orig __asm__(__USER_LABEL_PREFIX__ "mbsnrtowcs");
+ extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__))
+ size_t mbsnrtowcs(wchar_t *d, const char **s, size_t n, size_t wn, mbstate_t *st)
+@@ -57,6 +58,7 @@ size_t mbsnrtowcs(wchar_t *d, const char **s, size_t n, size_t wn, mbstate_t *st
+ }
+ return r;
+ }
++#endif
+
+ __typeof__(mbsrtowcs) __mbsrtowcs_orig __asm__(__USER_LABEL_PREFIX__ "mbsrtowcs");
+ extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__))
+@@ -145,6 +147,9 @@ wchar_t *wcsncpy(wchar_t *d, const wchar_t *s, size_t n)
+ return __wcsncpy_orig(d, s, n);
+ }
+
++#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
++ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
++#undef wcsnrtombs
+ __typeof__(wcsnrtombs) __wcsnrtombs_orig __asm__(__USER_LABEL_PREFIX__ "wcsnrtombs");
+ extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__))
+ size_t wcsnrtombs(char *d, const wchar_t **s, size_t wn, size_t n, mbstate_t *st)
+@@ -164,6 +169,7 @@ size_t wcsnrtombs(char *d, const wchar_t **s, size_t wn, size_t n, mbstate_t *st
+ }
+ return r;
+ }
++#endif
+
+ __typeof__(wcsrtombs) __wcsrtombs_orig __asm__(__USER_LABEL_PREFIX__ "wcsrtombs");
+ extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__))
+--
+2.3.3
+
+