From 520b55c8c410061c9a16417a6ec879967b1ea95a Mon Sep 17 00:00:00 2001 From: Ben Lindstrom Date: Wed, 12 Sep 2001 18:05:05 +0000 Subject: [PATCH] - markus@cvs.openbsd.org 2001/08/30 22:22:32 [ssh-keyscan.c] do not pass pointers to longjmp; fix from wayne@blorf.net --- ChangeLog | 5 ++++- ssh-keyscan.c | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 03c0024cc..40f69e845 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 9a9b72f4c..ad627bb99 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 @@ -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