diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2001-12-07 03:48:40 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2001-12-07 03:48:40 +0000 |
commit | 678a3da1587d4d9b55b7bba08dd34904fdd74005 (patch) | |
tree | d8a6119499d7747ce52b9024e7e95f448e741024 /usr.bin/passwd/local_passwd.c | |
parent | 195f436790b6c2bc4ab92b1463814192ca2cc3bb (diff) |
Catch SIGINT and SIGQUIT via the kbintr() signal handler.
Now that getpass() is interuptible we need to catch these so that the
"Password unchanged." message is printed.
Diffstat (limited to 'usr.bin/passwd/local_passwd.c')
-rw-r--r-- | usr.bin/passwd/local_passwd.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.bin/passwd/local_passwd.c b/usr.bin/passwd/local_passwd.c index 932e9fe6026..ae4e14eb7ae 100644 --- a/usr.bin/passwd/local_passwd.c +++ b/usr.bin/passwd/local_passwd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: local_passwd.c,v 1.22 2001/11/19 19:02:15 mpech Exp $ */ +/* $OpenBSD: local_passwd.c,v 1.23 2001/12/07 03:48:39 millert Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -35,7 +35,7 @@ #ifndef lint /*static const char sccsid[] = "from: @(#)local_passwd.c 5.5 (Berkeley) 5/6/91";*/ -static const char rcsid[] = "$OpenBSD: local_passwd.c,v 1.22 2001/11/19 19:02:15 mpech Exp $"; +static const char rcsid[] = "$OpenBSD: local_passwd.c,v 1.23 2001/12/07 03:48:39 millert Exp $"; #endif /* not lint */ #include <sys/types.h> @@ -152,6 +152,9 @@ getnewpasswd(pw, lc, authenticated) int tries, pwd_tries; char buf[_PASSWORD_LEN+1], salt[_PASSWORD_LEN]; + (void)signal(SIGINT, kbintr); + (void)signal(SIGQUIT, kbintr); + if (!authenticated) { (void)printf("Changing local password for %s.\n", pw->pw_name); if (uid && pw->pw_passwd[0] && @@ -187,6 +190,9 @@ getnewpasswd(pw, lc, authenticated) (void)printf("Couldn't generate salt.\n"); pw_error(NULL, 0, 0); } + (void)signal(SIGINT, SIG_DFL); + (void)signal(SIGQUIT, SIG_DFL); + return(crypt(buf, salt)); } |