From: Martin Lewis Date: Sun, 8 Mar 2020 18:35:20 +0000 (-0500) Subject: xstrndup: Use strndup instead of implementing it. X-Git-Tag: 1_32_0~22 X-Git-Url: https://git.librecmc.org/?p=oweals%2Fbusybox.git;a=commitdiff_plain;h=9b4a9d96b89f06355ad9551d782d34506699aac8 xstrndup: Use strndup instead of implementing it. Signed-off-by: Martin Lewis Signed-off-by: Denys Vlasenko --- diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index 93f325c62..f1cf7aeed 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -93,26 +93,17 @@ char* FAST_FUNC xstrdup(const char *s) // the (possibly truncated to length n) string into it. char* FAST_FUNC xstrndup(const char *s, int n) { - int m; char *t; if (ENABLE_DEBUG && s == NULL) bb_simple_error_msg_and_die("xstrndup bug"); - /* We can just xmalloc(n+1) and strncpy into it, */ - /* but think about xstrndup("abc", 10000) wastage! */ - m = n; - t = (char*) s; - while (m) { - if (!*t) break; - m--; - t++; - } - n -= m; - t = xmalloc(n + 1); - t[n] = '\0'; + t = strndup(s, n); - return memcpy(t, s, n); + if (t == NULL) + bb_die_memory_exhausted(); + + return t; } void* FAST_FUNC xmemdup(const void *s, int n)