Fix safestringlib build on OSX

pull/3541/head
Jelte Fennema 2020-02-26 17:20:33 +01:00
parent 8ca55c739f
commit 92d7a40d1d
3 changed files with 20 additions and 12 deletions

View File

@ -145,14 +145,14 @@ set_target_properties(${PROJECT_NAME}_objlib
target_compile_definitions(${PROJECT_NAME}_objlib PRIVATE -DSTDC_HEADERS) target_compile_definitions(${PROJECT_NAME}_objlib PRIVATE -DSTDC_HEADERS)
target_compile_options(${PROJECT_NAME}_objlib
PRIVATE -Wall -Wextra -Wsign-compare -Wformat-security)
target_compile_options(${PROJECT_NAME}_objlib target_compile_options(${PROJECT_NAME}_objlib
PRIVATE -Wno-unknown-pragmas -Wno-unused-parameter) PRIVATE -Wno-unknown-pragmas -Wno-unused-parameter)
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 7) if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 7)
target_compile_options(${PROJECT_NAME}_objlib target_compile_options(${PROJECT_NAME}_objlib
PRIVATE -Wno-implicit-fallthrough) PRIVATE -Wno-implicit-fallthrough)
endif() endif()
target_compile_options(${PROJECT_NAME}_objlib
PRIVATE -Wall -Wextra -Wsign-compare -Wformat-security)
target_compile_options(${PROJECT_NAME}_objlib target_compile_options(${PROJECT_NAME}_objlib
PRIVATE -Wstack-protector -Winit-self) PRIVATE -Wstack-protector -Winit-self)
target_compile_options(${PROJECT_NAME}_objlib target_compile_options(${PROJECT_NAME}_objlib
@ -166,7 +166,10 @@ target_compile_options(${PROJECT_NAME}_objlib PRIVATE -fPIE -fPIC)
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 6) if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 6)
target_compile_options(${PROJECT_NAME}_objlib PRIVATE -mmitigate-rop) target_compile_options(${PROJECT_NAME}_objlib PRIVATE -mmitigate-rop)
endif() endif()
if(APPLE)
elseif(UNIX)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now")
endif()
option(BUILD_ERROR_ON_WARNING "Fail compilation on warning" OFF) option(BUILD_ERROR_ON_WARNING "Fail compilation on warning" OFF)

View File

@ -97,7 +97,12 @@ extern errno_t wmemmove_s(wchar_t *dest, rsize_t dmax,
/* set bytes */ /* set bytes */
extern errno_t memset_s(void *dest, rsize_t dmax, uint8_t value); /* NOTE: This name is changed from memset_s to memset8_s out because it does
* not match with the C11 declaration of memset_s on OSX. The upstream issue
* can be found here:
* https://github.com/intel/safestringlib/issues/14
*/
extern errno_t memset8_s(void *dest, rsize_t dmax, uint8_t value);
/* set uint16_t */ /* set uint16_t */
extern errno_t memset16_s(uint16_t *dest, rsize_t dmax, uint16_t value); extern errno_t memset16_s(uint16_t *dest, rsize_t dmax, uint16_t value);

View File

@ -1,5 +1,5 @@
/*------------------------------------------------------------------ /*------------------------------------------------------------------
* memset_s * memset8_s
* *
* October 2008, Bo Berry * October 2008, Bo Berry
* *
@ -37,12 +37,12 @@
/** /**
* NAME * NAME
* memset_s * memset8_s
* *
* SYNOPSIS * SYNOPSIS
* #include "safe_mem_lib.h" * #include "safe_mem_lib.h"
* errno_t * errno_t
* memset_s(void *dest, rsize_t len, uint8_t value) * memset8_s(void *dest, rsize_t len, uint8_t value)
* *
* DESCRIPTION * DESCRIPTION
* Sets len bytes starting at dest to the specified value. * Sets len bytes starting at dest to the specified value.
@ -78,22 +78,22 @@
* *
*/ */
errno_t errno_t
memset_s (void *dest, rsize_t len, uint8_t value) memset8_s (void *dest, rsize_t len, uint8_t value)
{ {
if (dest == NULL) { if (dest == NULL) {
invoke_safe_mem_constraint_handler("memset_s: dest is null", invoke_safe_mem_constraint_handler("memset8_s: dest is null",
NULL, ESNULLP); NULL, ESNULLP);
return (RCNEGATE(ESNULLP)); return (RCNEGATE(ESNULLP));
} }
if (len == 0) { if (len == 0) {
invoke_safe_mem_constraint_handler("memset_s: len is 0", invoke_safe_mem_constraint_handler("memset8_s: len is 0",
NULL, ESZEROL); NULL, ESZEROL);
return (RCNEGATE(ESZEROL)); return (RCNEGATE(ESZEROL));
} }
if (len > RSIZE_MAX_MEM) { if (len > RSIZE_MAX_MEM) {
invoke_safe_mem_constraint_handler("memset_s: len exceeds max", invoke_safe_mem_constraint_handler("memset8_s: len exceeds max",
NULL, ESLEMAX); NULL, ESLEMAX);
return (RCNEGATE(ESLEMAX)); return (RCNEGATE(ESLEMAX));
} }
@ -102,4 +102,4 @@ memset_s (void *dest, rsize_t len, uint8_t value)
return (RCNEGATE(EOK)); return (RCNEGATE(EOK));
} }
EXPORT_SYMBOL(memset_s) EXPORT_SYMBOL(memset8_s)