- From f81ca6161223e3566ce78a427571235fb6848fe9 Mon Sep 17 00:00:00 2001
- From: Andreas Schneider <asn@cryptomilk.org>
- Date: Wed, 29 Aug 2018 18:41:15 +0200
- Subject: [PATCH 1/8] misc: Add strndup implementation if not provides by the
- OS
-
- Fixes T112
-
- Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
- (cherry picked from commit 247983e9820fd264cb5a59c14cc12846c028bd08)
- Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
- ---
- ConfigureChecks.cmake | 1 +
- config.h.cmake | 3 +++
- include/libssh/priv.h | 4 ++++
- src/misc.c | 21 +++++++++++++++++++++
- 4 files changed, 29 insertions(+)
-
- --- a/ConfigureChecks.cmake
- +++ b/ConfigureChecks.cmake
- @@ -115,6 +115,7 @@ endif (NOT WITH_GCRYPT)
-
- check_function_exists(isblank HAVE_ISBLANK)
- check_function_exists(strncpy HAVE_STRNCPY)
- +check_function_exists(strndup HAVE_STRNDUP)
- check_function_exists(strtoull HAVE_STRTOULL)
-
- if (NOT WIN32)
- --- a/config.h.cmake
- +++ b/config.h.cmake
- @@ -103,6 +103,9 @@
- /* Define to 1 if you have the `strncpy' function. */
- #cmakedefine HAVE_STRNCPY 1
-
- +/* Define to 1 if you have the `strndup' function. */
- +#cmakedefine HAVE_STRNDUP 1
- +
- /* Define to 1 if you have the `cfmakeraw' function. */
- #cmakedefine HAVE_CFMAKERAW 1
-
- --- a/include/libssh/priv.h
- +++ b/include/libssh/priv.h
- @@ -43,6 +43,10 @@
- # endif
- #endif /* !defined(HAVE_STRTOULL) */
-
- +#if !defined(HAVE_STRNDUP)
- +char *strndup(const char *s, size_t n);
- +#endif /* ! HAVE_STRNDUP */
- +
- #ifdef HAVE_BYTESWAP_H
- #include <byteswap.h>
- #endif
- --- a/src/misc.c
- +++ b/src/misc.c
- @@ -1028,6 +1028,27 @@ int ssh_match_group(const char *group, c
- return 0;
- }
-
- +#if !defined(HAVE_STRNDUP)
- +char *strndup(const char *s, size_t n)
- +{
- + char *x = NULL;
- +
- + if (n + 1 < n) {
- + return NULL;
- + }
- +
- + x = malloc(n + 1);
- + if (x == NULL) {
- + return NULL;
- + }
- +
- + memcpy(x, s, n);
- + x[n] = '\0';
- +
- + return x;
- +}
- +#endif /* ! HAVE_STRNDUP */
- +
- /** @} */
-
- /* vim: set ts=4 sw=4 et cindent: */
|