From 2939af61a1e92f7f03950a57f74abaa5bcd0ac07 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Mon, 31 Jul 2017 19:17:17 +0000 Subject: [PATCH] Do not override strlcpy and strlcat provided by the OS --- configure.ac | 2 +- src/base.h | 5 +++++ src/misc.cc | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index fe9176e..b004fd2 100644 --- a/configure.ac +++ b/configure.ac @@ -119,7 +119,7 @@ if test x$cross_compling != xyes ; then :; AC_FUNC_MALLOC fi AC_FUNC_MMAP if test x$cross_compling != xyes ; then :; AC_FUNC_REALLOC fi AC_FUNC_STRNLEN -AC_CHECK_FUNCS([dup2 getcwd gethostbyname gethostname gettimeofday mblen memchr memmove memset mkdir nl_langinfo putenv select setlocale socket strcasecmp strchr strcspn strdup strerror strncasecmp strrchr strspn strstr strtol sysinfo uname abort wordexp]) +AC_CHECK_FUNCS([dup2 getcwd gethostbyname gethostname gettimeofday mblen memchr memmove memset mkdir nl_langinfo putenv select setlocale socket strcasecmp strchr strcspn strdup strerror strlcpy strlcat strncasecmp strrchr strspn strstr strtol sysinfo uname abort wordexp]) AC_CHECK_FUNCS([gettimeofday putenv select socket strtol strtoul basename]) AC_CHECK_FUNCS([sysctlbyname asprintf]) AC_CHECK_FUNC([getloadavg],[AC_DEFINE([HAVE_GETLOADAVG2], 1, [getloadavg() is available])]) diff --git a/src/base.h b/src/base.h index 0df34cc..b76ec69 100644 --- a/src/base.h +++ b/src/base.h @@ -1,6 +1,7 @@ #ifndef __BASE_H #define __BASE_H +#include "config.h" #include #ifndef __GNUC__ @@ -48,10 +49,14 @@ inline T abs(T v) { /*** String Functions *********************************************************/ +#ifndef HAVE_STRLCPY /* Prefer this as a safer alternative over strcpy. Return strlen(from). */ size_t strlcpy(char *dest, const char *from, size_t dest_size); +#endif +#ifndef HAVE_STRLCAT /* Prefer this over strcat. Return strlen(dest) + strlen(from). */ size_t strlcat(char *dest, const char *from, size_t dest_size); +#endif char *newstr(char const *str); char *newstr(char const *str, int len); diff --git a/src/misc.cc b/src/misc.cc index b0ac1c9..3a88276 100644 --- a/src/misc.cc +++ b/src/misc.cc @@ -447,6 +447,8 @@ void operator delete[](void *p) { #endif +#ifndef HAVE_STRLCPY + /* Prefer this as a safer alternative over strcpy. Return strlen(from). */ size_t strlcpy(char *dest, const char *from, size_t dest_size) { @@ -461,6 +463,9 @@ size_t strlcpy(char *dest, const char *from, size_t dest_size) while (*in) ++in; return in - from; } +#endif + +#ifndef HAVE_STRLCAT /* Prefer this over strcat. Return strlen(dest) + strlen(from). */ size_t strlcat(char *dest, const char *from, size_t dest_size) @@ -471,6 +476,8 @@ size_t strlcat(char *dest, const char *from, size_t dest_size) return to - dest + strlcpy(to, from, dest_size - (to - dest)); } +#endif + char *newstr(char const *str) { return (str != NULL ? newstr(str, strlen(str)) : NULL); } -- ldv