From 18660b8621ba718beb9f624c7ca2954becefd560 Mon Sep 17 00:00:00 2001 From: djm Date: Fri, 26 Oct 2007 04:25:31 +0000 Subject: [PATCH] - canacar@cvs.openbsd.org 2007/09/25 23:48:57 [ssh-agent.c] When adding a key that already exists, update the properties (time, confirm, comment) instead of discarding them. ok djm@ markus@ --- ChangeLog | 4 ++++ ssh-agent.c | 15 ++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 802b62c7..aecf05ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16,6 +16,10 @@ These options have been in use for some years; ok markus@ "no objection" millert@ (NB. RCD ID sync only for portable) + - canacar@cvs.openbsd.org 2007/09/25 23:48:57 + [ssh-agent.c] + When adding a key that already exists, update the properties + (time, confirm, comment) instead of discarding them. ok djm@ markus@ 20070927 - (dtucker) [configure.ac atomicio.c] Fall back to including if diff --git a/ssh-agent.c b/ssh-agent.c index fb12545b..f1794834 100644 --- a/ssh-agent.c +++ b/ssh-agent.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-agent.c,v 1.156 2007/09/09 11:38:01 sobrado Exp $ */ +/* $OpenBSD: ssh-agent.c,v 1.157 2007/09/25 23:48:57 canacar Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -457,6 +457,7 @@ static void process_add_identity(SocketEntry *e, int version) { Idtab *tab = idtab_lookup(version); + Identity *id; int type, success = 0, death = 0, confirm = 0; char *type_name, *comment; Key *k = NULL; @@ -539,19 +540,19 @@ process_add_identity(SocketEntry *e, int version) } if (lifetime && !death) death = time(NULL) + lifetime; - if (lookup_identity(k, version) == NULL) { - Identity *id = xmalloc(sizeof(Identity)); + if ((id = lookup_identity(k, version)) == NULL) { + id = xmalloc(sizeof(Identity)); id->key = k; - id->comment = comment; - id->death = death; - id->confirm = confirm; TAILQ_INSERT_TAIL(&tab->idlist, id, next); /* Increment the number of identities. */ tab->nentries++; } else { key_free(k); - xfree(comment); + xfree(id->comment); } + id->comment = comment; + id->death = death; + id->confirm = confirm; send: buffer_put_int(&e->output, 1); buffer_put_char(&e->output, -- 2.45.1