- (djm) Disable sigdie() for platforms that cannot safely syslog inside
   a signal handler (basically all of them, excepting OpenBSD);
   ok dtucker@
diff --git a/ChangeLog b/ChangeLog
index 4f31df3..d813c1f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -42,6 +42,9 @@
      [gss-genr.c ssh-gss.h]
      constify host argument to match the rest of the GSSAPI functions and
      unbreak compilation with -Werror
+ - (djm) Disable sigdie() for platforms that cannot safely syslog inside
+   a signal handler (basically all of them, excepting OpenBSD);
+   ok dtucker@
 
 20060817
  - (dtucker) [openbsd-compat/fake-rfc2553.c openbsd-compat/setproctitle.c]
@@ -5263,4 +5266,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.4495 2006/08/18 14:46:43 djm Exp $
+$Id: ChangeLog,v 1.4496 2006/08/18 22:38:23 djm Exp $
diff --git a/configure.ac b/configure.ac
index f8e6cd4..9d30bff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-# $Id: configure.ac,v 1.350 2006/08/18 08:51:20 dtucker Exp $
+# $Id: configure.ac,v 1.351 2006/08/18 22:38:23 djm Exp $
 #
 # Copyright (c) 1999-2004 Damien Miller
 #
@@ -15,7 +15,7 @@
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org)
-AC_REVISION($Revision: 1.350 $)
+AC_REVISION($Revision: 1.351 $)
 AC_CONFIG_SRCDIR([ssh.c])
 
 AC_CONFIG_HEADER(config.h)
@@ -402,6 +402,8 @@
 	AC_DEFINE(HAVE_ATTRIBUTE__SENTINEL__, 1, [OpenBSD's gcc has sentinel])
 	AC_DEFINE(HAVE_ATTRIBUTE__BOUNDED__, 1, [OpenBSD's gcc has bounded])
 	AC_DEFINE(SSH_TUN_OPENBSD, 1, [Open tunnel devices the OpenBSD way])
+	AC_DEFINE(SYSLOG_R_SAFE_IN_SIGHAND, 1,
+	    [syslog_r function is safe to use in in a signal handler])
 	;;
 *-*-solaris*)
 	if test "x$withval" != "xno" ; then
diff --git a/defines.h b/defines.h
index fdc43cd..6b395f8 100644
--- a/defines.h
+++ b/defines.h
@@ -25,7 +25,7 @@
 #ifndef _DEFINES_H
 #define _DEFINES_H
 
-/* $Id: defines.h,v 1.136 2006/08/06 11:23:28 dtucker Exp $ */
+/* $Id: defines.h,v 1.137 2006/08/18 22:38:24 djm Exp $ */
 
 
 /* Constants */
@@ -542,6 +542,11 @@
 # undef HAVE_UPDWTMPX
 #endif
 
+#if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT) && \
+    defined(SYSLOG_R_SAFE_IN_SIGHAND)
+# define DO_LOG_SAFE_IN_SIGHAND
+#endif
+
 #if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY)
 # define memmove(s1, s2, n) bcopy((s2), (s1), (n))
 #endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */
diff --git a/log.c b/log.c
index 32db0cb..0ce4d85 100644
--- a/log.c
+++ b/log.c
@@ -142,9 +142,11 @@
 {
 	va_list args;
 
+#ifdef DO_LOG_SAFE_IN_SIGHAND
 	va_start(args, fmt);
 	do_log(SYSLOG_LEVEL_FATAL, fmt, args);
 	va_end(args);
+#endif
 	_exit(1);
 }