X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Fcommon_allocation.c;h=dfa65d579dc6b74b0e566e44baff2fc5451dcaa1;hb=72c8645af31896829b674b575c5375706f362a30;hp=22dfb2509c3538fc459c9fac07538f4b15b930e0;hpb=7919161117c5c4d952e664a46b7cf5c1e4c9c5b2;p=oweals%2Fgnunet.git diff --git a/src/util/common_allocation.c b/src/util/common_allocation.c index 22dfb2509..dfa65d579 100644 --- a/src/util/common_allocation.c +++ b/src/util/common_allocation.c @@ -256,6 +256,21 @@ GNUNET_xstrdup_ (const char *str, const char *filename, int linenumber) } +#if ! HAVE_STRNLEN +static size_t +strnlen (const char *s, + size_t n) +{ + const char *e; + + e = memchr (s, '\0', n); + if (NULL == e) + return n; + return e - s; +} +#endif + + /** * Dup partially a string (same semantics as strndup). * @@ -271,6 +286,8 @@ GNUNET_xstrndup_ (const char *str, size_t len, const char *filename, { char *res; + if (0 == len) + return GNUNET_strdup (""); GNUNET_assert_at (str != NULL, filename, linenumber); len = strnlen (str, len); res = GNUNET_xmalloc_ (len + 1, filename, linenumber);