[XDK][PSDK] add security checks for PSDK as well

svn path=/trunk/; revision=69081
This commit is contained in:
Christoph von Wittich 2015-09-07 08:37:11 +00:00
parent b35101db5f
commit 88cdcad1f6
3 changed files with 15 additions and 3 deletions

View file

@ -768,8 +768,13 @@ typedef struct _GROUP_AFFINITY {
#define RTL_NUMBER_OF_V2(A) \
(({ int _check_array_type[__builtin_types_compatible_p(typeof(A), typeof(&A[0])) ? -1 : 1]; (void)_check_array_type; }), \
RTL_NUMBER_OF_V1(A))
#elif defined(__cplusplus)
extern "C++" {
template <typename T, size_t N>
static char (& SAFE_RTL_NUMBER_OF(T (&)[N]))[N];
}
#define RTL_NUMBER_OF_V2(A) sizeof(SAFE_RTL_NUMBER_OF(A))
#else
/// \todo implement security checks for cplusplus / MSVC
#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
#endif

View file

@ -702,8 +702,13 @@ typedef struct _GROUP_AFFINITY {
#define RTL_NUMBER_OF_V2(A) \
(({ int _check_array_type[__builtin_types_compatible_p(typeof(A), typeof(&A[0])) ? -1 : 1]; (void)_check_array_type; }), \
RTL_NUMBER_OF_V1(A))
#elif defined(__cplusplus)
extern "C++" {
template <typename T, size_t N>
static char (& SAFE_RTL_NUMBER_OF(T (&)[N]))[N];
}
#define RTL_NUMBER_OF_V2(A) sizeof(SAFE_RTL_NUMBER_OF(A))
#else
/// \todo implement security checks for cplusplus / MSVC
#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
#endif

View file

@ -681,8 +681,10 @@ typedef struct _GROUP_AFFINITY {
(({ int _check_array_type[__builtin_types_compatible_p(typeof(A), typeof(&A[0])) ? -1 : 1]; (void)_check_array_type; }), \
RTL_NUMBER_OF_V1(A))
#elif defined(__cplusplus)
extern "C++" {
template <typename T, size_t N>
char (& SAFE_RTL_NUMBER_OF(T (&)[N]))[N];
static char (& SAFE_RTL_NUMBER_OF(T (&)[N]))[N];
}
#define RTL_NUMBER_OF_V2(A) sizeof(SAFE_RTL_NUMBER_OF(A))
#else
#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)