add version 2 identities by default, too
Markus Friedl
markus.friedl at informatik.uni-erlangen.de
Sun Jul 29 23:54:10 EST 2001
perhaps i'm going to add something similar,
probably using a for() loop.
On Sun, Jul 29, 2001 at 04:28:53AM -0400, Colin Walters wrote:
> mouring at etoh.eviladmin.org writes:
>
> > Correct me if I'm wrong.. But this looks wrong.. Using pw before
> > checking to ensure it's valid?! That just seems like asking for
> > trouble.
>
> Sorry, yes, you're right. That's very embarassing...
>
> Here's what is hopefully a better patch:
>
> cd /usr/src/ssh/openssh-2.9p2/
> diff -u /usr/src/ssh/openssh-2.9p2/ssh-add.c /usr/src/ssh/openssh-2.9p2.new/ssh-add.c
> --- /usr/src/ssh/openssh-2.9p2/ssh-add.c Thu Apr 19 16:33:08 2001
> +++ /usr/src/ssh/openssh-2.9p2.new/ssh-add.c Sun Jul 29 04:19:34 2001
> @@ -182,12 +182,63 @@
> printf("The agent has no identities.\n");
> }
>
> +void
> +add_default_identities(AuthenticationConnection *ac, int deleting)
> +{
> + char identity_name[1024];
> + char dsa_name[1024];
> + char rsa_name[1024];
> + int identity_found, dsa_found, rsa_found;
> + struct passwd *pw = getpwuid(getuid());
> + if (!pw) {
> + fprintf(stderr, "No user found with uid %u\n",
> + (u_int)getuid());
> + ssh_close_authentication_connection(ac);
> + exit(1);
> + }
> + snprintf(identity_name, sizeof identity_name, "%s/%s", pw->pw_dir, _PATH_SSH_CLIENT_IDENTITY);
> + snprintf(rsa_name, sizeof rsa_name, "%s/%s", pw->pw_dir, _PATH_SSH_CLIENT_ID_RSA);
> + snprintf(dsa_name, sizeof dsa_name, "%s/%s", pw->pw_dir, _PATH_SSH_CLIENT_ID_DSA);
> + identity_found = !access(identity_name, R_OK);
> + rsa_found = !access(rsa_name, R_OK);
> + dsa_found = !access(dsa_name, R_OK);
> +
> + if (!(identity_found || rsa_found || dsa_found)) {
> + fprintf(stderr,
> + "No files specified, and unable to find one of:\n%s\n%s\n%s\n",
> +
> + identity_name,
> + rsa_name,
> + dsa_name);
> + ssh_close_authentication_connection(ac);
> + exit(1);
> + }
> + if (identity_found) {
> + if (deleting)
> + delete_file(ac, identity_name);
> + else
> + add_file(ac, identity_name);
> + }
> +
> + if (rsa_found) {
> + if (deleting)
> + delete_file(ac, rsa_name);
> + else
> + add_file(ac, rsa_name);
> + }
> +
> + if (dsa_found) {
> + if (deleting)
> + delete_file(ac, dsa_name);
> + else
> + add_file(ac, dsa_name);
> + }
> +}
> +
> int
> main(int argc, char **argv)
> {
> AuthenticationConnection *ac = NULL;
> - struct passwd *pw;
> - char buf[1024];
> int no_files = 1;
> int i;
> int deleting = 0;
> @@ -220,26 +271,16 @@
> no_files = 0;
> continue;
> }
> +
> no_files = 0;
> if (deleting)
> delete_file(ac, argv[i]);
> else
> add_file(ac, argv[i]);
> }
> - if (no_files) {
> - pw = getpwuid(getuid());
> - if (!pw) {
> - fprintf(stderr, "No user found with uid %u\n",
> - (u_int)getuid());
> - ssh_close_authentication_connection(ac);
> - exit(1);
> - }
> - snprintf(buf, sizeof buf, "%s/%s", pw->pw_dir, _PATH_SSH_CLIENT_IDENTITY);
> - if (deleting)
> - delete_file(ac, buf);
> - else
> - add_file(ac, buf);
> - }
> + if (no_files)
> + add_default_identities(ac, deleting);
> +
> clear_pass();
> ssh_close_authentication_connection(ac);
> exit(0);
>
> Diff finished at Sun Jul 29 04:28:34
>
> cd /usr/src/ssh/openssh-2.9p2/
> diff -u /usr/src/ssh/openssh-2.9p2/ssh-add.1 /usr/src/ssh/openssh-2.9p2.new/ssh-add.1
> --- /usr/src/ssh/openssh-2.9p2/ssh-add.1 Wed Apr 11 11:59:36 2001
> +++ /usr/src/ssh/openssh-2.9p2.new/ssh-add.1 Sun Jul 29 00:22:11 2001
> @@ -51,10 +51,12 @@
> .Nm
> adds RSA or DSA identities to the authentication agent,
> .Xr ssh-agent 1 .
> -When run without arguments, it adds the file
> -.Pa $HOME/.ssh/identity .
> -Alternative file names can be given on the command line.
> -If any file requires a passphrase,
> +When run without arguments, it looks for any of
> +.Pa $HOME/.ssh/identity ,
> +.Pa $HOME/.ssh/id_rsa , and
> +.Pa $HOME/.ssh/id_dsa ,
> +and adds them if present. Alternative file names can be given on the
> +command line. If any file requires a passphrase,
> .Nm
> asks for the passphrase from the user.
> The Passphrase it is read from the user's tty.
> @@ -88,9 +90,6 @@
> It is possible to
> specify a passphrase when generating the key; that passphrase will be
> used to encrypt the private part of this file.
> -This is the default file added by
> -.Nm
> -when no other files have been specified.
> .It Pa $HOME/.ssh/id_dsa
> Contains the protocol version 2 DSA authentication identity of the user.
> .It Pa $HOME/.ssh/id_rsa
>
> Diff finished at Sun Jul 29 03:57:54
More information about the openssh-unix-dev
mailing list