[PATCH] xstrndup: Use strndup instead of implementing it.

Martin Lewis martin.lewis.x84 at gmail.com
Sun Mar 8 18:55:53 UTC 2020


Used the same function instead of strndup by mistake... Here's the correct version:

Signed-off-by: Martin Lewis <martin.lewis.x84 at gmail.com>
---
 libbb/xfuncs_printf.c | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

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)
-- 
2.11.0



More information about the busybox mailing list