Loading...
include/secure/_string.h Libc-498 Libc-763.12
--- Libc/Libc-498/include/secure/_string.h
+++ Libc/Libc-763.12/include/secure/_string.h
@@ -28,28 +28,34 @@
 #ifndef _SECURE__STRING_H_
 #define _SECURE__STRING_H_
 
+#include <sys/cdefs.h>
 #include <secure/_common.h>
 
 #if _USE_FORTIFY_LEVEL > 0
 
-/* memcpy, mempcpy, memmove, memset, strcpy, stpcpy, strncpy, strcat
-   and strncat */
+/* memcpy, mempcpy, memmove, memset, strcpy, stpcpy, strncpy, stpncpy,
+   strcat, and strncat */
 
 #undef memcpy
 #undef memmove
 #undef memset
 #undef strcpy
+#if __DARWIN_C_LEVEL >= 200809L
 #undef stpcpy
+#undef stpncpy
+#endif
 #undef strncpy
 #undef strcat
+#if ! (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 32000)
 #undef strncat
+#endif
 
 #define memcpy(dest, src, len)					\
   ((__darwin_obsz0 (dest) != (size_t) -1)				\
    ? __builtin___memcpy_chk (dest, src, len, __darwin_obsz0 (dest))	\
    : __inline_memcpy_chk (dest, src, len))
 
-static inline void *
+static __inline void *
 __inline_memcpy_chk (void *__dest, const void *__src, size_t __len)
 {
   return __builtin___memcpy_chk (__dest, __src, __len, __darwin_obsz0(__dest));
@@ -60,7 +66,7 @@
    ? __builtin___memmove_chk (dest, src, len, __darwin_obsz0 (dest))	\
    : __inline_memmove_chk (dest, src, len))
 
-static inline void *
+static __inline void *
 __inline_memmove_chk (void *__dest, const void *__src, size_t __len)
 {
   return __builtin___memmove_chk (__dest, __src, __len, __darwin_obsz0(__dest));
@@ -71,7 +77,7 @@
    ? __builtin___memset_chk (dest, val, len, __darwin_obsz0 (dest))	\
    : __inline_memset_chk (dest, val, len))
 
-static inline void *
+static __inline void *
 __inline_memset_chk (void *__dest, int __val, size_t __len)
 {
   return __builtin___memset_chk (__dest, __val, __len, __darwin_obsz0(__dest));
@@ -82,29 +88,43 @@
    ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest))		\
    : __inline_strcpy_chk (dest, src))
 
-static inline char *
+static __inline char *
 __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src)
 {
   return __builtin___strcpy_chk (__dest, __src, __darwin_obsz(__dest));
 }
 
+#if __DARWIN_C_LEVEL >= 200809L
 #define stpcpy(dest, src)					\
   ((__darwin_obsz0 (dest) != (size_t) -1)				\
    ? __builtin___stpcpy_chk (dest, src, __darwin_obsz (dest))		\
    : __inline_stpcpy_chk (dest, src))
 
-static inline char *
+static __inline char *
 __inline_stpcpy_chk (char *__dest, const char *__src)
 {
   return __builtin___stpcpy_chk (__dest, __src, __darwin_obsz(__dest));
 }
+
+#define stpncpy(dest, src, len)					\
+  ((__darwin_obsz0 (dest) != (size_t) -1)				\
+   ? __builtin___stpncpy_chk (dest, src, len, __darwin_obsz (dest))	\
+   : __inline_stpncpy_chk (dest, src, len))
+
+static __inline char *
+__inline_stpncpy_chk (char *__restrict __dest, const char *__restrict __src,
+		      size_t __len)
+{
+  return __builtin___stpncpy_chk (__dest, __src, __len, __darwin_obsz(__dest));
+}
+#endif
 
 #define strncpy(dest, src, len)					\
   ((__darwin_obsz0 (dest) != (size_t) -1)				\
    ? __builtin___strncpy_chk (dest, src, len, __darwin_obsz (dest))	\
    : __inline_strncpy_chk (dest, src, len))
 
-static inline char *
+static __inline char *
 __inline_strncpy_chk (char *__restrict __dest, const char *__restrict __src,
 		      size_t __len)
 {
@@ -116,23 +136,25 @@
    ? __builtin___strcat_chk (dest, src, __darwin_obsz (dest))		\
    : __inline_strcat_chk (dest, src))
 
-static inline char *
+static __inline char *
 __inline_strcat_chk (char *__restrict __dest, const char *__restrict __src)
 {
   return __builtin___strcat_chk (__dest, __src, __darwin_obsz(__dest));
 }
 
+#if ! (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 32000)
 #define strncat(dest, src, len)					\
   ((__darwin_obsz0 (dest) != (size_t) -1)				\
-   ? __builtin___strcat_chk (dest, src, __darwin_obsz (dest))		\
+   ? __builtin___strncat_chk (dest, src, len, __darwin_obsz (dest))	\
    : __inline_strncat_chk (dest, src, len))
 
-static inline char *
+static __inline char *
 __inline_strncat_chk (char *__restrict __dest, const char *__restrict __src,
 		      size_t __len)
 {
   return __builtin___strncat_chk (__dest, __src, __len, __darwin_obsz(__dest));
 }
+#endif
 
 #endif
 #endif