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

Signed-off-by: Martin Lewis <[email protected]>
---
 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

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to