Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 May 2015 09:11:13 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282712 - head/usr.sbin/pw
Message-ID:  <201505100911.t4A9BDB1004612@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Sun May 10 09:11:12 2015
New Revision: 282712
URL: https://svnweb.freebsd.org/changeset/base/282712

Log:
  if the check of the pw db fails return the failed value

Modified:
  head/usr.sbin/pw/pwupd.c

Modified: head/usr.sbin/pw/pwupd.c
==============================================================================
--- head/usr.sbin/pw/pwupd.c	Sun May 10 09:09:07 2015	(r282711)
+++ head/usr.sbin/pw/pwupd.c	Sun May 10 09:11:12 2015	(r282712)
@@ -110,45 +110,43 @@ pwdb(char *arg,...)
 static int
 pw_update(struct passwd * pwd, char const * user)
 {
-	int             rc = 0;
-
-	rc = pwdb("-C", (char *)NULL);	/* Check only */
-	if (rc == 0) {
-		int pfd, tfd;
-		struct passwd *pw = NULL;
-		struct passwd *old_pw = NULL;
-
-		if (pwd != NULL)
-			pw = pw_dup(pwd);
-
-		if (user != NULL)
-			old_pw = GETPWNAM(user);
-
-		if (pw_init(pwpath, NULL))
-			err(1, "pw_init()");
-		if ((pfd = pw_lock()) == -1) {
-			pw_fini();
-			err(1, "pw_lock()");
-		}
-		if ((tfd = pw_tmp(-1)) == -1) {
-			pw_fini();
-			err(1, "pw_tmp()");
-		}
-		if (pw_copy(pfd, tfd, pw, old_pw) == -1) {
-			pw_fini();
-			err(1, "pw_copy()");
-		}
-		/*
-		 * in case of deletion of a user, the whole database
-		 * needs to be regenerated
-		 */
-		if (pw_mkdb(pw != NULL ? pw->pw_name : NULL) == -1) {
-			pw_fini();
-			err(1, "pw_mkdb()");
-		}
-		free(pw);
+	struct passwd	*pw = NULL;
+	struct passwd	*old_pw = NULL;
+	int		 rc, pfd, tfd;
+
+	if ((rc = pwdb("-C", NULL)) != 0)
+		return (rc);
+
+	if (pwd != NULL)
+		pw = pw_dup(pwd);
+
+	if (user != NULL)
+		old_pw = GETPWNAM(user);
+
+	if (pw_init(pwpath, NULL))
+		err(1, "pw_init()");
+	if ((pfd = pw_lock()) == -1) {
+		pw_fini();
+		err(1, "pw_lock()");
+	}
+	if ((tfd = pw_tmp(-1)) == -1) {
+		pw_fini();
+		err(1, "pw_tmp()");
+	}
+	if (pw_copy(pfd, tfd, pw, old_pw) == -1) {
+		pw_fini();
+		err(1, "pw_copy()");
+	}
+	/*
+	 * in case of deletion of a user, the whole database
+	 * needs to be regenerated
+	 */
+	if (pw_mkdb(pw != NULL ? pw->pw_name : NULL) == -1) {
 		pw_fini();
+		err(1, "pw_mkdb()");
 	}
+	free(pw);
+	pw_fini();
 
 	return (0);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505100911.t4A9BDB1004612>