summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2001-08-30 22:22:33 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2001-08-30 22:22:33 +0000
commit5d6c92a466b908e54d8bebf00576ce2018bbba10 (patch)
tree2cdad040ea73b062d634b76f1454307066ed7796
parent7676bd84f09ae0425e67bf4e48e1b4497c718da2 (diff)
do not pass pointers to longjmp; fix from wayne@blorf.net
-rw-r--r--usr.bin/ssh/ssh-keyscan.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/usr.bin/ssh/ssh-keyscan.c b/usr.bin/ssh/ssh-keyscan.c
index 96471067661..08af3ccdf23 100644
--- a/usr.bin/ssh/ssh-keyscan.c
+++ b/usr.bin/ssh/ssh-keyscan.c
@@ -7,7 +7,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: ssh-keyscan.c,v 1.28 2001/08/27 22:02:13 danh Exp $");
+RCSID("$OpenBSD: ssh-keyscan.c,v 1.29 2001/08/30 22:22:32 markus Exp $");
#include <sys/queue.h>
#include <errno.h>
@@ -60,6 +60,7 @@ size_t read_wait_size;
int ncon;
int nonfatal_fatal = 0;
jmp_buf kexjmp;
+Key *kexjmp_key;
/*
* Keep a connection structure for each file descriptor. The state
@@ -302,7 +303,8 @@ keygrab_ssh1(con *c)
static int
hostjump(Key *hostkey)
{
- longjmp(kexjmp, (int)hostkey);
+ kexjmp_key = hostkey;
+ longjmp(kexjmp, 1);
}
static int
@@ -343,10 +345,8 @@ keygrab_ssh2(con *c)
xfree(c->c_kex);
c->c_kex = NULL;
packet_close();
- if (j < 0)
- j = 0;
- return (Key*)(j);
+ return j < 0? NULL : kexjmp_key;
}
static void