diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2015-05-10 10:02:09 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2015-05-10 10:02:09 +0000 |
commit | 49910924b696011d0262f72b0e3526c3667a900f (patch) | |
tree | b8f9b607906b925bd96ea2a918c8edc92df303da | |
parent | 00691e44c947b614c92b4a7c47d5c5807ee6df1d (diff) | |
download | pw-darwin-49910924b696011d0262f72b0e3526c3667a900f.tar.gz pw-darwin-49910924b696011d0262f72b0e3526c3667a900f.tar.zst pw-darwin-49910924b696011d0262f72b0e3526c3667a900f.zip |
Use strndup(3) instead of malloc(3) + memcpy(3)
Check the return of strndup
-rw-r--r-- | pw/pw_conf.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/pw/pw_conf.c b/pw/pw_conf.c index 209982c..46474a1 100644 --- a/pw/pw_conf.c +++ b/pw/pw_conf.c @@ -34,6 +34,7 @@ static const char rcsid[] = #include <string.h> #include <ctype.h> #include <fcntl.h> +#include <err.h> #include "pw.h" @@ -211,15 +212,18 @@ boolean_str(int val) char * newstr(char const * p) { - char *q = NULL; + char *q; + size_t l; - if ((p = unquote(p)) != NULL) { - int l = strlen(p) + 1; + if ((p = unquote(p)) == NULL) + return (NULL); - if ((q = malloc(l)) != NULL) - memcpy(q, p, l); - } - return q; + l = strlen(p) + 1; + + if ((q = strndup(p, l)) == NULL) + err(1, "strndup()"); + + return (q); } struct userconf * |