=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/ssh-add.c,v retrieving revision 1.46.2.1 retrieving revision 1.46.2.2 diff -u -r1.46.2.1 -r1.46.2.2 --- src/usr.bin/ssh/ssh-add.c 2002/03/07 17:37:47 1.46.2.1 +++ src/usr.bin/ssh/ssh-add.c 2002/05/17 00:03:24 1.46.2.2 @@ -35,7 +35,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh-add.c,v 1.46.2.1 2002/03/07 17:37:47 jason Exp $"); +RCSID("$OpenBSD: ssh-add.c,v 1.46.2.2 2002/05/17 00:03:24 miod Exp $"); #include @@ -56,7 +56,7 @@ static char *default_files[] = { _PATH_SSH_CLIENT_ID_RSA, _PATH_SSH_CLIENT_ID_DSA, - _PATH_SSH_CLIENT_IDENTITY, + _PATH_SSH_CLIENT_IDENTITY, NULL }; @@ -170,7 +170,13 @@ static int update_card(AuthenticationConnection *ac, int add, const char *id) { - if (ssh_update_card(ac, add, id)) { + char *pin; + + pin = read_passphrase("Enter passphrase for smartcard: ", RP_ALLOW_STDIN); + if (pin == NULL) + return -1; + + if (ssh_update_card(ac, add, id, pin)) { fprintf(stderr, "Card %s: %s\n", add ? "added" : "removed", id); return 0; @@ -300,6 +306,8 @@ if (argc == 0) { char buf[MAXPATHLEN]; struct passwd *pw; + struct stat st; + int count = 0; if ((pw = getpwuid(getuid())) == NULL) { fprintf(stderr, "No user found with uid %u\n", @@ -309,11 +317,17 @@ } for(i = 0; default_files[i]; i++) { - snprintf(buf, sizeof(buf), "%s/%s", pw->pw_dir, + snprintf(buf, sizeof(buf), "%s/%s", pw->pw_dir, default_files[i]); + if (stat(buf, &st) < 0) + continue; if (do_file(ac, deleting, buf) == -1) ret = 1; + else + count++; } + if (count == 0) + ret = 1; } else { for(i = 0; i < argc; i++) { if (do_file(ac, deleting, argv[i]) == -1)