* *printf-posix: Avoid crash in a configure test
@ 2024-02-20 11:07 Bruno Haible
2024-02-21 11:51 ` Bruno Haible
0 siblings, 1 reply; 2+ messages in thread
From: Bruno Haible @ 2024-02-20 11:07 UTC (permalink / raw)
To: bug-gnulib
After configuring my dev environment to leave core dumps in /var/crash,
I see that a 'configure' run in a testdir of all of gnulib produces one
core dump, and I get a UI notification of it. The cause is the test program
that tests whether *printf supports the %n directive: it triggers an abort(),
which produces a core dump:
$ gcc -O2 -g conftest.c && ./a.out
*** %n in writable segment detected ***
Aborted (core dumped)
This patch fixes it.
2024-02-20 Bruno Haible <bruno@clisp.org>
*printf-posix: Avoid crash in a configure test.
* m4/printf.m4 (gl_PRINTF_DIRECTIVE_N): In the test program, catch the
SIGABRT signal, so that the program does not dump core.
diff --git a/m4/printf.m4 b/m4/printf.m4
index bb67d59409..05bf7fe1df 100644
--- a/m4/printf.m4
+++ b/m4/printf.m4
@@ -1,4 +1,4 @@
-# printf.m4 serial 89
+# printf.m4 serial 90
dnl Copyright (C) 2003, 2007-2024 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -890,6 +890,7 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N]
[
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -907,6 +908,12 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N]
exit (1);
}
#endif
+static void
+abort_handler (int sig)
+{
+ (void) sig;
+ _exit (1);
+}
static char fmtstring[10];
static char buf[100];
int main ()
@@ -915,6 +922,7 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N]
#ifdef _MSC_VER
_set_invalid_parameter_handler (invalid_parameter_handler);
#endif
+ signal (SIGABRT, abort_handler);
/* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2)
support %n in format strings in read-only memory but not in writable
memory. */
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: *printf-posix: Avoid crash in a configure test
2024-02-20 11:07 *printf-posix: Avoid crash in a configure test Bruno Haible
@ 2024-02-21 11:51 ` Bruno Haible
0 siblings, 0 replies; 2+ messages in thread
From: Bruno Haible @ 2024-02-21 11:51 UTC (permalink / raw)
To: bug-gnulib
> 2024-02-20 Bruno Haible <bruno@clisp.org>
>
> *printf-posix: Avoid crash in a configure test.
> * m4/printf.m4 (gl_PRINTF_DIRECTIVE_N): In the test program, catch the
> SIGABRT signal, so that the program does not dump core.
There's another configure test that also exercises %n.
2024-02-21 Bruno Haible <bruno@clisp.org>
*printf-posix: Avoid crash in another configure test.
* m4/printf.m4 (gl_SNPRINTF_DIRECTIVE_N): In the test program, catch the
SIGABRT signal, so that the program does not dump core.
diff --git a/m4/printf.m4 b/m4/printf.m4
index 05bf7fe1df..6f917778e8 100644
--- a/m4/printf.m4
+++ b/m4/printf.m4
@@ -1705,6 +1705,7 @@ AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N]
[
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
+#include <signal.h>
#include <stdio.h>
#include <string.h>
#if HAVE_SNPRINTF
@@ -1721,11 +1722,18 @@ AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N]
return ret;
}
#endif
+static void
+abort_handler (int sig)
+{
+ (void) sig;
+ _exit (1);
+}
static char fmtstring[10];
static char buf[100];
int main ()
{
int count = -1;
+ signal (SIGABRT, abort_handler);
/* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2)
support %n in format strings in read-only memory but not in writable
memory. */
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-02-21 15:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-20 11:07 *printf-posix: Avoid crash in a configure test Bruno Haible
2024-02-21 11:51 ` Bruno Haible
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).