[Pkg-shadow-commits] r1735 - in upstream/trunk: . src

nekral-guest at alioth.debian.org nekral-guest at alioth.debian.org
Wed Jan 23 21:50:27 UTC 2008


Author: nekral-guest
Date: 2008-01-23 21:50:27 +0000 (Wed, 23 Jan 2008)
New Revision: 1735

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/NEWS
   upstream/trunk/src/usermod.c
Log:
Check that the new fields set with -u, -s, -l, -g, -f, -e, -d, and -c
differ from the old ones. If a requested new value is equal to the old
one, no changes will be performed for that field. If no fields are
changed, usermod will exist successfully with a warning. This avoids
logging changes to syslog when there are actually no changes.


Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2008-01-23 21:19:08 UTC (rev 1734)
+++ upstream/trunk/ChangeLog	2008-01-23 21:50:27 UTC (rev 1735)
@@ -1,5 +1,14 @@
 2008-01-23  Nicolas François  <nicolas.francois at centraliens.net>
 
+	* NEWS, src/usermod.c: Check that the new fields set with -u, -s,
+	-l, -g, -f, -e, -d, and -c differ from the old ones. If a
+	requested new value is equal to the old one, no changes will
+	be performed for that field. If no fields are changed, usermod
+	will exist successfully with a warning. This avoids logging
+	changes to syslog when there are actually no changes.
+
+2008-01-23  Nicolas François  <nicolas.francois at centraliens.net>
+
 	* src/usermod.c: Always define user_newcomment, user_newshell,
 	user_newexpire, and user_newinactive. It is more simple to always
 	have user_<x> as the old field, and user_new<x> as the new field

Modified: upstream/trunk/NEWS
===================================================================
--- upstream/trunk/NEWS	2008-01-23 21:19:08 UTC (rev 1734)
+++ upstream/trunk/NEWS	2008-01-23 21:50:27 UTC (rev 1735)
@@ -50,6 +50,11 @@
 - usermod
   * Keep the access and modification time of files when moving an user's home
     directory.
+  * Check that the new fields set with -u, -s, -l, -g, -f, -e, -d, and -c
+    differ from the old ones. If a requested new value is equal to the old
+    one, no changes will be performed for that field. If no fields are
+    changed, usermod will exist successfully with a warning. This avoids
+    logging changes to syslog when there are actually no changes.
 - vipw/vigr
   * Recommend editing the shadowed (resp. regular) file if the regular (resp.
     shadowed) file was edited.

Modified: upstream/trunk/src/usermod.c
===================================================================
--- upstream/trunk/src/usermod.c	2008-01-23 21:19:08 UTC (rev 1734)
+++ upstream/trunk/src/usermod.c	2008-01-23 21:50:27 UTC (rev 1735)
@@ -930,15 +930,7 @@
 						 Prog, optarg);
 					exit (E_BAD_ARG);
 				}
-
-				/*
-				 * If the name does not really change, we mustn't
-				 * set the flag as this will cause rather serious
-				 * problems later!
-				 */
-				if (strcmp (user_name, optarg))
-					lflg++;
-
+				lflg++;
 				user_newname = optarg;
 				break;
 			case 'L':
@@ -982,6 +974,38 @@
 		fprintf (stderr, _("%s: no flags given\n"), Prog);
 		exit (E_USAGE);
 	}
+
+	if (user_newid == user_id) {
+		uflg = 0;
+	}
+	if (user_newgid == user_gid) {
+		gflg = 0;
+	}
+	if (strcmp (user_newshell, user_shell) == 0) {
+		sflg = 0;
+	}
+	if (strcmp (user_newname, user_name) == 0) {
+		lflg = 0;
+	}
+	if (user_newinactive == user_inactive) {
+		fflg = 0;
+	}
+	if (user_newexpire == user_expire) {
+		eflg = 0;
+	}
+	if (strcmp (user_newhome, user_home) == 0) {
+		dflg = 0;
+	}
+	if (strcmp (user_newcomment, user_comment) == 0) {
+		cflg = 0;
+	}
+
+	if (Uflg + uflg + sflg + pflg + oflg + mflg + Lflg + lflg + Gflg +
+	    gflg + fflg + eflg + dflg + cflg == 0) {
+		fprintf (stderr, _("%s: no changes\n"), Prog);
+		exit (E_SUCCESS);
+	}
+
 	if (!is_shadow_pwd && (eflg || fflg)) {
 		fprintf (stderr,
 			 _




More information about the Pkg-shadow-commits mailing list