From 97c91f688fa8f8d67bbe2e0aa0feb912fc3c00ef Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Sun, 23 Apr 2006 12:08:37 +1000 Subject: [PATCH] - djm@cvs.openbsd.org 2006/04/20 09:27:09 [auth.h clientloop.c dispatch.c dispatch.h kex.h] replace the last non-sig_atomic_t flag used in a signal handler with a sig_atomic_t, unfortunately with some knock-on effects in other (non- signal) contexts in which it is used; ok markus@ --- ChangeLog | 7 ++++++- auth.h | 4 ++-- clientloop.c | 4 ++-- dispatch.c | 4 ++-- dispatch.h | 4 ++-- kex.h | 4 ++-- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 551845a5a..8131cd6cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -47,6 +47,11 @@ that sftp and sftp-server (which use the Buffer functions in bufaux.c but not the bignum ones) no longer need to be linked with libcrypto. ok markus@ + - djm@cvs.openbsd.org 2006/04/20 09:27:09 + [auth.h clientloop.c dispatch.c dispatch.h kex.h] + replace the last non-sig_atomic_t flag used in a signal handler with a + sig_atomic_t, unfortunately with some knock-on effects in other (non- + signal) contexts in which it is used; ok markus@ 20060421 - (djm) [Makefile.in configure.ac session.c sshpty.c] @@ -4558,4 +4563,4 @@ - (djm) Trim deprecated options from INSTALL. Mention UsePAM - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu -$Id: ChangeLog,v 1.4311 2006/04/23 02:08:19 djm Exp $ +$Id: ChangeLog,v 1.4312 2006/04/23 02:08:37 djm Exp $ diff --git a/auth.h b/auth.h index c69de34e5..adbfdd2e5 100644 --- a/auth.h +++ b/auth.h @@ -1,4 +1,4 @@ -/* $OpenBSD: auth.h,v 1.52 2006/03/25 22:22:42 djm Exp $ */ +/* $OpenBSD: auth.h,v 1.53 2006/04/20 09:27:09 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. @@ -48,7 +48,7 @@ typedef struct Authmethod Authmethod; typedef struct KbdintDevice KbdintDevice; struct Authctxt { - int success; + sig_atomic_t success; int postponed; /* authentication needs another step */ int valid; /* user exists and is allowed to login */ int attempt; diff --git a/clientloop.c b/clientloop.c index 7745c4dd8..d317b79f4 100644 --- a/clientloop.c +++ b/clientloop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: clientloop.c,v 1.161 2006/03/25 18:30:55 deraadt Exp $ */ +/* $OpenBSD: clientloop.c,v 1.162 2006/04/20 09:27:09 djm Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -131,7 +131,7 @@ static volatile sig_atomic_t received_signal = 0; static int in_non_blocking_mode = 0; /* Common data for the client loop code. */ -static int quit_pending; /* Set to non-zero to quit the client loop. */ +static volatile sig_atomic_t quit_pending; /* Set non-zero to quit the loop. */ static int escape_char; /* Escape character. */ static int escape_pending; /* Last character was the escape character */ static int last_was_cr; /* Last character was a newline. */ diff --git a/dispatch.c b/dispatch.c index eac07b1b3..4f965a62d 100644 --- a/dispatch.c +++ b/dispatch.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dispatch.c,v 1.18 2006/03/25 13:17:01 djm Exp $ */ +/* $OpenBSD: dispatch.c,v 1.19 2006/04/20 09:27:09 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -76,7 +76,7 @@ dispatch_set(int type, dispatch_fn *fn) dispatch[type] = fn; } void -dispatch_run(int mode, int *done, void *ctxt) +dispatch_run(int mode, volatile sig_atomic_t *done, void *ctxt) { for (;;) { int type; diff --git a/dispatch.h b/dispatch.h index b33288f66..4bca8a5a0 100644 --- a/dispatch.h +++ b/dispatch.h @@ -1,4 +1,4 @@ -/* $OpenBSD: dispatch.h,v 1.10 2006/03/25 22:22:43 djm Exp $ */ +/* $OpenBSD: dispatch.h,v 1.11 2006/04/20 09:27:09 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. @@ -33,6 +33,6 @@ typedef void dispatch_fn(int, u_int32_t, void *); void dispatch_init(dispatch_fn *); void dispatch_set(int, dispatch_fn *); void dispatch_range(u_int, u_int, dispatch_fn *); -void dispatch_run(int, int *, void *); +void dispatch_run(int, volatile sig_atomic_t *, void *); void dispatch_protocol_error(int, u_int32_t, void *); void dispatch_protocol_ignore(int, u_int32_t, void *); diff --git a/kex.h b/kex.h index 597b54810..137c3d8eb 100644 --- a/kex.h +++ b/kex.h @@ -1,4 +1,4 @@ -/* $OpenBSD: kex.h,v 1.41 2006/03/25 22:22:43 djm Exp $ */ +/* $OpenBSD: kex.h,v 1.42 2006/04/20 09:27:09 djm Exp $ */ /* * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. @@ -114,7 +114,7 @@ struct Kex { int kex_type; Buffer my; Buffer peer; - int done; + sig_atomic_t done; int flags; const EVP_MD *evp_md; char *client_version_string;