38 lines
1.2 KiB
Text
38 lines
1.2 KiB
Text
|
Don't use printf %n.
|
||
|
|
||
|
Index: src/emacs.c
|
||
|
--- src/emacs.c.orig
|
||
|
+++ src/emacs.c
|
||
|
@@ -2958,25 +2958,17 @@ shut_down_emacs (int sig, Lisp_Object stuff)
|
||
|
reset_all_sys_modes ();
|
||
|
if (sig && sig != SIGTERM)
|
||
|
{
|
||
|
- static char const fmt[] = "Fatal error %d: %n%s\n";
|
||
|
+ static char const fmt[] = "Fatal error %d: ";
|
||
|
#ifdef HAVE_HAIKU
|
||
|
if (haiku_debug_on_fatal_error)
|
||
|
debugger ("Fatal error in Emacs");
|
||
|
#endif
|
||
|
- char buf[max ((sizeof fmt - sizeof "%d%n%s\n"
|
||
|
- + INT_STRLEN_BOUND (int) + 1),
|
||
|
- min (PIPE_BUF, MAX_ALLOCA))];
|
||
|
+ char buf[sizeof fmt - strlen ("%d") + INT_STRLEN_BOUND (int) + 1];
|
||
|
char const *sig_desc = safe_strsignal (sig);
|
||
|
- int nlen;
|
||
|
- int buflen = snprintf (buf, sizeof buf, fmt, sig, &nlen, sig_desc);
|
||
|
- if (0 <= buflen && buflen < sizeof buf)
|
||
|
- emacs_write (STDERR_FILENO, buf, buflen);
|
||
|
- else
|
||
|
- {
|
||
|
- emacs_write (STDERR_FILENO, buf, nlen);
|
||
|
- emacs_write (STDERR_FILENO, sig_desc, strlen (sig_desc));
|
||
|
- emacs_write (STDERR_FILENO, fmt + sizeof fmt - 2, 1);
|
||
|
- }
|
||
|
+ snprintf (buf, sizeof buf, fmt, sig);
|
||
|
+ emacs_write (STDERR_FILENO, buf, strlen (buf));
|
||
|
+ emacs_write (STDERR_FILENO, sig_desc, strlen (sig_desc));
|
||
|
+ emacs_write (STDERR_FILENO, "\n", 1);
|
||
|
}
|
||
|
}
|
||
|
#else
|