diff options
author | Paul Traina <pst@FreeBSD.org> | 1994-09-29 20:54:41 +0000 |
---|---|---|
committer | Paul Traina <pst@FreeBSD.org> | 1994-09-29 20:54:41 +0000 |
commit | 122c9247d493a97d5caf93de78cd8e59319ba4b9 (patch) | |
tree | aeb02a1f808fc1f87069d86a8409da5de4b1e0a7 /usr.bin/su/su.c | |
parent | bd5d6eecd019dd4f7e180a468cfa058f74cf91f5 (diff) | |
download | src-122c9247d493a97d5caf93de78cd8e59319ba4b9.tar.gz src-122c9247d493a97d5caf93de78cd8e59319ba4b9.zip |
Add support for s/keys
Notes
Notes:
svn path=/head/; revision=3208
Diffstat (limited to 'usr.bin/su/su.c')
-rw-r--r-- | usr.bin/su/su.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/usr.bin/su/su.c b/usr.bin/su/su.c index f06ef2f0b2e7..1928d1ee4a22 100644 --- a/usr.bin/su/su.c +++ b/usr.bin/su/su.c @@ -68,6 +68,10 @@ int use_kerberos = 1; #define ARGSTR "-flm" #endif +#ifdef SKEY +char *skey_crypt(), *skey_getpass(); +#endif + char *ontty __P((void)); int chshell __P((char *)); @@ -165,8 +169,14 @@ main(argc, argv) } /* if target requires a password, verify it */ if (*pwd->pw_passwd) { +#ifdef SKEY + p = skey_getpass("Password:", pwd, 1); + if (strcmp(pwd->pw_passwd, + skey_crypt(p, pwd->pw_passwd, pwd, 1))) { +#else p = getpass("Password:"); if (strcmp(pwd->pw_passwd, crypt(p, pwd->pw_passwd))) { +#endif fprintf(stderr, "Sorry\n"); syslog(LOG_AUTH|LOG_WARNING, "BAD SU %s to %s%s", username, |