X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/6465356a983ac139f81d3b7913cdb548477c346c..refs/heads/master:/include/secure/_string.h?ds=sidebyside diff --git a/include/secure/_string.h b/include/secure/_string.h index c1ff94b..595b85d 100644 --- a/include/secure/_string.h +++ b/include/secure/_string.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007 Apple Inc. All rights reserved. + * Copyright (c) 2007,2017 Apple Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * @@ -28,21 +28,16 @@ #ifndef _SECURE__STRING_H_ #define _SECURE__STRING_H_ -#include #include +#include #include #if _USE_FORTIFY_LEVEL > 0 -#ifndef __has_builtin -#define _undef__has_builtin -#define __has_builtin(x) 0 -#endif - /* */ #if defined(__clang__) && \ - ((defined(__apple_build_version__) && __apple_build_version__ >= 4260006) || \ - (!defined(__apple_build_version__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 3)))) + ((defined(__apple_build_version__) && __apple_build_version__ >= 4260006) || \ + (!defined(__apple_build_version__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 3)))) #define __HAS_FIXED_CHK_PROTOTYPES 1 #else #define __HAS_FIXED_CHK_PROTOTYPES 0 @@ -51,91 +46,106 @@ /* memccpy, memcpy, mempcpy, memmove, memset, strcpy, strlcpy, stpcpy, strncpy, stpncpy, strcat, strlcat, and strncat */ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 || \ + defined(__DRIVERKIT_VERSION_MIN_REQUIRED) #if __has_builtin(__builtin___memccpy_chk) && __HAS_FIXED_CHK_PROTOTYPES #undef memccpy -#define memccpy(dest, src, c, len) \ - __builtin___memccpy_chk (dest, src, c, len, __darwin_obsz0 (dest)) +/* void *memccpy(void *dst, const void *src, int c, size_t n) */ +#define memccpy(dest, ...) \ + __builtin___memccpy_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest)) #endif #endif #if __has_builtin(__builtin___memcpy_chk) || defined(__GNUC__) #undef memcpy -#define memcpy(dest, src, len) \ - __builtin___memcpy_chk (dest, src, len, __darwin_obsz0 (dest)) +/* void *memcpy(void *dst, const void *src, size_t n) */ +#define memcpy(dest, ...) \ + __builtin___memcpy_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest)) #endif #if __has_builtin(__builtin___memmove_chk) || defined(__GNUC__) #undef memmove -#define memmove(dest, src, len) \ - __builtin___memmove_chk (dest, src, len, __darwin_obsz0 (dest)) +/* void *memmove(void *dst, const void *src, size_t len) */ +#define memmove(dest, ...) \ + __builtin___memmove_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest)) #endif #if __has_builtin(__builtin___memset_chk) || defined(__GNUC__) #undef memset -#define memset(dest, val, len) \ - __builtin___memset_chk (dest, val, len, __darwin_obsz0 (dest)) +/* void *memset(void *b, int c, size_t len) */ +#define memset(dest, ...) \ + __builtin___memset_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest)) #endif +#ifndef UNIFDEF_DRIVERKIT #if __has_builtin(__builtin___strcpy_chk) || defined(__GNUC__) #undef strcpy -#define strcpy(dest, src) \ - __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) +/* char *strcpy(char *dst, const char *src) */ +#define strcpy(dest, ...) \ + __builtin___strcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif #if __DARWIN_C_LEVEL >= 200809L #if __has_builtin(__builtin___stpcpy_chk) || defined(__GNUC__) #undef stpcpy -#define stpcpy(dest, src) \ - __builtin___stpcpy_chk (dest, src, __darwin_obsz (dest)) +/* char *stpcpy(char *dst, const char *src) */ +#define stpcpy(dest, ...) \ + __builtin___stpcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif +#endif /* __DARWIN_C_LEVEL >= 200809L */ +#endif /* UNIFDEF_DRIVERKIT */ +#if __DARWIN_C_LEVEL >= 200809L #if __has_builtin(__builtin___stpncpy_chk) || __APPLE_CC__ >= 5666 || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) #undef stpncpy -#define stpncpy(dest, src, len) \ - __builtin___stpncpy_chk (dest, src, len, __darwin_obsz (dest)) +/* char *stpncpy(char *dst, const char *src, size_t n) */ +#define stpncpy(dest, ...) \ + __builtin___stpncpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif #endif /* _DARWIN_C_LEVEL >= 200809L */ #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 || \ + defined(__DRIVERKIT_VERSION_MIN_REQUIRED) #if __has_builtin(__builtin___strlcpy_chk) && __HAS_FIXED_CHK_PROTOTYPES #undef strlcpy -#define strlcpy(dest, src, len) \ - __builtin___strlcpy_chk (dest, src, len, __darwin_obsz (dest)) +/* size_t strlcpy(char *dst, const char *source, size_t size) */ +#define strlcpy(dest, ...) \ + __builtin___strlcpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif #if __has_builtin(__builtin___strlcat_chk) && __HAS_FIXED_CHK_PROTOTYPES #undef strlcat -#define strlcat(dest, src, len) \ - __builtin___strlcat_chk (dest, src, len, __darwin_obsz (dest)) +/* size_t strlcat(char *dst, const char *source, size_t size) */ +#define strlcat(dest, ...) \ + __builtin___strlcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif #endif /* __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 */ #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ #if __has_builtin(__builtin___strncpy_chk) || defined(__GNUC__) #undef strncpy -#define strncpy(dest, src, len) \ - __builtin___strncpy_chk (dest, src, len, __darwin_obsz (dest)) +/* char *strncpy(char *dst, const char *src, size_t n) */ +#define strncpy(dest, ...) \ + __builtin___strncpy_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif +#ifndef UNIFDEF_DRIVERKIT #if __has_builtin(__builtin___strcat_chk) || defined(__GNUC__) #undef strcat -#define strcat(dest, src) \ - __builtin___strcat_chk (dest, src, __darwin_obsz (dest)) +/* char *strcat(char *s1, const char *s2) */ +#define strcat(dest, ...) \ + __builtin___strcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif +#endif /* UNIFDEF_DRIVERKIT */ #if ! (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 32000) #if __has_builtin(__builtin___strncat_chk) || defined(__GNUC__) #undef strncat -#define strncat(dest, src, len) \ - __builtin___strncat_chk (dest, src, len, __darwin_obsz (dest)) -#endif +/* char *strncat(char *s1, const char *s2, size_t n) */ +#define strncat(dest, ...) \ + __builtin___strncat_chk (dest, __VA_ARGS__, __darwin_obsz (dest)) #endif - -#ifdef _undef__has_builtin -#undef _undef__has_builtin -#undef __has_builtin #endif #undef __HAS_FIXED_CHK_PROTOTYPES