From 9d36bd3bbc553fcbabe7c69811e996876f539f43 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Mon, 11 May 2009 13:44:30 +0000 Subject: Make strndup implementation more robust svn path=/trunk/tools/ttf2f/; revision=7464 --- src/utils.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/utils.c b/src/utils.c index 1aea66f..9698825 100644 --- a/src/utils.c +++ b/src/utils.c @@ -6,21 +6,18 @@ char *strndup(const char *s, size_t n) { - /* this assumes s is NUL terminated - if not, - * some silly value will be returned */ - size_t len = strlen(s); + size_t len = 0; char *res; - /* limit to n */ - if (len > n || n == 0) - len = n; + while (len < n && s[len] != '\0') + len++; - res = (char *) malloc(len + 1); + res = malloc(len + 1); if (res == NULL) return NULL; res[len] = '\0'; - return (char *) memcpy(res, s, len); + return memcpy(res, s, len); } /** -- cgit v1.2.3