aboutsummaryrefslogtreecommitdiff
path: root/src/misc.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2018-08-29 18:41:15 +0200
committerAndreas Schneider <asn@cryptomilk.org>2018-08-29 19:04:44 +0200
commit247983e9820fd264cb5a59c14cc12846c028bd08 (patch)
treed29b27aadcab16aa587df64c1972266bec994267 /src/misc.c
parentf0e99961b6d04b6fc7d4054a6c111223d8ff2894 (diff)
downloadlibssh-247983e9820fd264cb5a59c14cc12846c028bd08.tar.gz
libssh-247983e9820fd264cb5a59c14cc12846c028bd08.tar.xz
libssh-247983e9820fd264cb5a59c14cc12846c028bd08.zip
misc: Add strndup implementation if not provides by the OS
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src/misc.c')
-rw-r--r--src/misc.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/misc.c b/src/misc.c
index 5f606044..89934900 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -1085,4 +1085,25 @@ void explicit_bzero(void *s, size_t n)
}
#endif /* !HAVE_EXPLICIT_BZERO */
+#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 */
+
/** @} */