]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - chpass/edit.c
Typo fix.
[pw-darwin.git] / chpass / edit.c
index 59646f0aa39900d133f2a6c7cefb3780374aca89..ce82f8ee4644752022b13ab4ee5ff85355cac8e2 100644 (file)
@@ -109,7 +109,7 @@ static int
 display(const char *tfn, struct passwd *pw)
 {
        FILE *fp;
-       char *bp, *p;
+       char *bp, *gecos, *p;
 
        if ((fp = fopen(tfn, "w")) == NULL) {
                warn("%s", tfn);
@@ -151,8 +151,13 @@ display(const char *tfn, struct passwd *pw)
                (void)fprintf(fp, "Shell: %s\n",
                    *pw->pw_shell ? pw->pw_shell : _PATH_BSHELL);
        else
-         list[E_SHELL].restricted = 1;
-       bp = pw->pw_gecos;
+               list[E_SHELL].restricted = 1;
+
+       if ((bp = gecos = strdup(pw->pw_gecos)) == NULL) {
+               warn(NULL);
+               fclose(fp);
+               return (-1);
+       }
 
        p = strsep(&bp, ",");
        p = strdup(p ? p : "");
@@ -183,6 +188,8 @@ display(const char *tfn, struct passwd *pw)
        if (!list[E_OTHER].restricted || master_mode)
          (void)fprintf(fp, "Other information: %s\n", bp);
 
+       free(gecos);
+
        (void)fchown(fileno(fp), getuid(), getgid());
        (void)fclose(fp);
        return (0);