summaryrefslogtreecommitdiffstats
path: root/pw/pw_conf.c
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2015-05-10 10:02:09 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2015-05-10 10:02:09 +0000
commit49910924b696011d0262f72b0e3526c3667a900f (patch)
treeb8f9b607906b925bd96ea2a918c8edc92df303da /pw/pw_conf.c
parent00691e44c947b614c92b4a7c47d5c5807ee6df1d (diff)
downloadpw-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
Diffstat (limited to 'pw/pw_conf.c')
-rw-r--r--pw/pw_conf.c18
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 *