Re: [PATCH 1/5] Make xstrndup common
From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:43:07
On Sat, 28 Apr 2007, Josh Triplett wrote:
Daniel Barkalow wrote:quoted
It was implemented in commit.c; move it with the other x memory functions.[...]quoted
+static inline char *xstrndup(const char *str, int len) +{ + char *ret = xmalloc(len + 1); + memcpy(ret, str, len); + ret[len] = '\0'; + return ret; +} +I don't know if it matters, but this definition of xstrndup, like the version in commit.c, doesn't match the definition of strndup. strndup duplicates a string, copying up to n characters or the length of the string. This xstrndup always copies n characters, reading past the end of the string if it doesn't have at least n characters.
Good catch. Replacing the memcpy with strncpy solves this, right? (Potentially allocating a bit of extra memory if someone is actually using it on too short a string for some reason, of course). -Daniel *This .sig left intentionally blank*