summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2001-09-12 18:05:05 +0000
committerBen Lindstrom <mouring@eviladmin.org>2001-09-12 18:05:05 +0000
commit520b55c8c410061c9a16417a6ec879967b1ea95a (patch)
tree80f4976d5e5e53580455f71fd8916e46036c24f4
parentd71ba5771b5c67b4efd3294ecb85dc4d10d03265 (diff)
- markus@cvs.openbsd.org 2001/08/30 22:22:32
[ssh-keyscan.c] do not pass pointers to longjmp; fix from wayne@blorf.net
-rw-r--r--ChangeLog5
-rw-r--r--ssh-keyscan.c10
2 files changed, 9 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 03c0024c..40f69e84 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -70,6 +70,9 @@
[auth-options.c sshd.8]
validate ports for permitopen key file option. add host/port
alternative syntax for IPv6. ok markus@
+ - markus@cvs.openbsd.org 2001/08/30 22:22:32
+ [ssh-keyscan.c]
+ do not pass pointers to longjmp; fix from wayne@blorf.net
20010815
- (bal) Fixed stray code in readconf.c that went in by mistake.
@@ -6393,4 +6396,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
-$Id: ChangeLog,v 1.1505 2001/09/12 18:03:31 mouring Exp $
+$Id: ChangeLog,v 1.1506 2001/09/12 18:05:05 mouring Exp $
diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index 9a9b72f4..ad627bb9 100644
--- a/ssh-keyscan.c
+++ b/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 $");
#if defined(HAVE_SYS_QUEUE_H) && !defined(HAVE_BOGUS_SYS_QUEUE_H)
#include <sys/queue.h>
@@ -68,6 +68,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
@@ -322,7 +323,8 @@ keygrab_ssh1(con *c)
static int
hostjump(Key *hostkey)
{
- longjmp(kexjmp, (int)hostkey);
+ kexjmp_key = hostkey;
+ longjmp(kexjmp, 1);
}
static int
@@ -363,10 +365,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