* Fixed #8090: Duplicate definition of strndup * Moved strndup detection to winpr Co-authored-by: Armin Novak <anovak@thincast.com>
This commit is contained in:
parent
0460215a24
commit
bf56a39e6f
@ -312,12 +312,6 @@ if(NOT IOS)
|
||||
find_package(Threads REQUIRED)
|
||||
endif()
|
||||
|
||||
if (IOS)
|
||||
set(HAVE_STRNDUP 1)
|
||||
else()
|
||||
CHECK_SYMBOL_EXISTS(strndup string.h HAVE_STRNDUP)
|
||||
endif()
|
||||
|
||||
# Enable address sanitizer, where supported and when required
|
||||
if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCC)
|
||||
CHECK_C_COMPILER_FLAG ("-fno-omit-frame-pointer" fno-omit-frame-pointer)
|
||||
|
@ -7,7 +7,6 @@
|
||||
#cmakedefine HAVE_SYSLOG_H
|
||||
#cmakedefine HAVE_JOURNALD_H
|
||||
#cmakedefine HAVE_VALGRIND_MEMCHECK_H
|
||||
#cmakedefine HAVE_STRNDUP
|
||||
|
||||
/* Features */
|
||||
#cmakedefine SWRESAMPLE_FOUND
|
||||
|
@ -21,6 +21,8 @@
|
||||
#ifndef FREERDP_LIB_CORE_SETTINGS_H
|
||||
#define FREERDP_LIB_CORE_SETTINGS_H
|
||||
|
||||
#include <winpr/string.h>
|
||||
|
||||
#include <freerdp/config.h>
|
||||
|
||||
#include <freerdp/types.h>
|
||||
@ -29,16 +31,6 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#if !defined(HAVE_STRNDUP)
|
||||
static INLINE char* strndup(const char* src, size_t len)
|
||||
{
|
||||
char* dst = calloc(len + 1, sizeof(char));
|
||||
if (dst)
|
||||
strncpy(dst, src, len);
|
||||
return dst;
|
||||
}
|
||||
#endif
|
||||
|
||||
FREERDP_LOCAL BOOL freerdp_settings_set_default_order_support(rdpSettings* settings);
|
||||
FREERDP_LOCAL BOOL freerdp_settings_clone_keys(rdpSettings* dst, const rdpSettings* src);
|
||||
FREERDP_LOCAL void freerdp_settings_free_keys(rdpSettings* dst, BOOL cleanup);
|
||||
|
@ -6,7 +6,6 @@
|
||||
#cmakedefine HAVE_POLL_H
|
||||
#cmakedefine HAVE_SYSLOG_H
|
||||
#cmakedefine HAVE_JOURNALD_H
|
||||
#cmakedefine HAVE_STRNDUP
|
||||
#cmakedefine HAVE_PIXMAN_REGION
|
||||
|
||||
#endif /* UWAC_CONFIG_H */
|
||||
|
@ -163,6 +163,7 @@ else()
|
||||
endif()
|
||||
|
||||
if(NOT IOS)
|
||||
CHECK_SYMBOL_EXISTS(strndup string.h HAVE_STRNDUP)
|
||||
check_include_files(unistd.h HAVE_UNISTD_H)
|
||||
check_include_files(execinfo.h HAVE_EXECINFO_H)
|
||||
check_include_files(inttypes.h HAVE_INTTYPES_H)
|
||||
@ -170,6 +171,7 @@ if(NOT IOS)
|
||||
check_include_files(inttypes.h HAVE_INTTYPES_H)
|
||||
else(NOT IOS)
|
||||
set(HAVE_STDINT_H 1)
|
||||
set(HAVE_STRNDUP 1)
|
||||
set(HAVE_INTTYPES_H 1)
|
||||
endif(NOT IOS)
|
||||
|
||||
|
@ -646,23 +646,11 @@ INT64 GetLine(char** lineptr, size_t* size, FILE* stream)
|
||||
}
|
||||
|
||||
#if !defined(HAVE_STRNDUP)
|
||||
char* strndup(const char* s, size_t n)
|
||||
char* strndup(const char* src, size_t n)
|
||||
{
|
||||
char* rc;
|
||||
size_t len;
|
||||
|
||||
WINPR_ASSERT(s || (n == 0));
|
||||
if (n == 0)
|
||||
return NULL;
|
||||
|
||||
len = strnlen(s, n);
|
||||
if (len == n)
|
||||
len++;
|
||||
|
||||
rc = calloc(len, sizeof(char));
|
||||
if (!rc)
|
||||
return NULL;
|
||||
memcpy(rc, s, n);
|
||||
return rc;
|
||||
char* dst = calloc(n + 1, sizeof(char));
|
||||
if (dst)
|
||||
strncpy(dst, src, n);
|
||||
return dst;
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user