summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/ssh-agent.c
diff options
context:
space:
mode:
authormarkus <markus@openbsd.org>2000-11-12 19:03:28 +0000
committermarkus <markus@openbsd.org>2000-11-12 19:03:28 +0000
commit58fb129d099abc73065c4b59681a527ffbb4ce4a (patch)
tree147a640c3ce6c8d7479a5b630a7f9376e345ccd3 /usr.bin/ssh/ssh-agent.c
parenttypo (diff)
downloadwireguard-openbsd-58fb129d099abc73065c4b59681a527ffbb4ce4a.tar.xz
wireguard-openbsd-58fb129d099abc73065c4b59681a527ffbb4ce4a.zip
off-by-one when removing a key from the agent
Diffstat (limited to 'usr.bin/ssh/ssh-agent.c')
-rw-r--r--usr.bin/ssh/ssh-agent.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/usr.bin/ssh/ssh-agent.c b/usr.bin/ssh/ssh-agent.c
index ad58a559642..96a822e6a37 100644
--- a/usr.bin/ssh/ssh-agent.c
+++ b/usr.bin/ssh/ssh-agent.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-agent.c,v 1.37 2000/09/21 11:07:51 markus Exp $ */
+/* $OpenBSD: ssh-agent.c,v 1.38 2000/11/12 19:03:28 markus Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -37,7 +37,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: ssh-agent.c,v 1.37 2000/09/21 11:07:51 markus Exp $");
+RCSID("$OpenBSD: ssh-agent.c,v 1.38 2000/11/12 19:03:28 markus Exp $");
#include "ssh.h"
#include "rsa.h"
@@ -311,8 +311,12 @@ process_remove_identity(SocketEntry *e, int version)
Idtab *tab = idtab_lookup(version);
key_free(tab->identities[idx].key);
xfree(tab->identities[idx].comment);
- if (idx != tab->nentries)
- tab->identities[idx] = tab->identities[tab->nentries];
+ if (tab->nentries < 1)
+ fatal("process_remove_identity: "
+ "internal error: tab->nentries %d",
+ tab->nentries);
+ if (idx != tab->nentries - 1)
+ tab->identities[idx] = tab->identities[tab->nentries - 1];
tab->nentries--;
success = 1;
}