chpass(1) patch for changing only crypted passwords

Dmitry Morozovsky marck at rinet.ru
Mon Sep 25 00:45:00 PDT 2006


Dear colleagues,

chpass is a bit broken since chpass.c:1.23 - it uses pw_equal which does not 
check crypted password field; so, you can not change _only_ crypt pass with 
chpass. Attached patch fixes this.

Any thoughts/objections?

Sincerely,
D.Marck                                     [DM5020, MCK-RIPE, DM3-RIPN]
------------------------------------------------------------------------
*** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck at rinet.ru ***
------------------------------------------------------------------------
-------------- next part --------------
Index: usr.bin/chpass/chpass.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/chpass/chpass.c,v
retrieving revision 1.27
diff -u -r1.27 chpass.c
--- usr.bin/chpass/chpass.c	18 Jan 2004 21:46:39 -0000	1.27
+++ usr.bin/chpass/chpass.c	25 Sep 2006 07:42:25 -0000
@@ -217,7 +217,12 @@
 		pw_fini();
 		if (pw == NULL)
 			err(1, "edit()");
-		if (pw_equal(old_pw, pw))
+		/* 
+		 * pw_equal does not check for crypted passwords, so we
+		 * should do it explicitly
+		 */
+		if (pw_equal(old_pw, pw) && 
+		    strcmp(old_pw->pw_passwd, pw->pw_passwd) == 0)
 			errx(0, "user information unchanged");
 	}
 


More information about the freebsd-stable mailing list