[tor-commits] [tor/master] Fix crash on glibc __libc_message()

nickm at torproject.org nickm at torproject.org
Wed Feb 11 20:15:54 UTC 2015


commit f5f6d13e4cc0d8e823888694bb2c3415d80690ab
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Feb 11 09:44:07 2015 -0500

    Fix crash on glibc __libc_message()
    
    __libc_message() tries to open /dev/tty with O_RDWR, but the sandbox
    catches that and calls it a crash.  Instead, I'm making the sandbox
    setenv LIBC_FATAL_STDERR_, so that glibc uses stderr instead.
    
    Fix for 14759, bugfix on 0.2.5.1-alpha
---
 changes/bug14759     |    6 ++++++
 src/common/sandbox.c |    3 +++
 2 files changed, 9 insertions(+)

diff --git a/changes/bug14759 b/changes/bug14759
new file mode 100644
index 0000000..82fe97c
--- /dev/null
+++ b/changes/bug14759
@@ -0,0 +1,6 @@
+  o Minor bugfixes (sandbox):
+    - Allow Glibc fatal errors to be sent to stderr before Tor exits.
+      Previously, glibc would try to write them to /dev/tty, and the sandbox
+      would trap the call and make Tor exit prematurely. Fixes bug 14759;
+      bugfix on 0.2.5.1-alpha.
+
diff --git a/src/common/sandbox.c b/src/common/sandbox.c
index 450b04a..57847e1 100644
--- a/src/common/sandbox.c
+++ b/src/common/sandbox.c
@@ -1676,6 +1676,9 @@ register_cfg(sandbox_cfg_t* cfg)
 static int
 initialise_libseccomp_sandbox(sandbox_cfg_t* cfg)
 {
+  /* Prevent glibc from trying to open /dev/tty on fatal error */
+  setenv("LIBC_FATAL_STDERR_", "1", 1);
+
   if (install_sigsys_debugging())
     return -1;
 





More information about the tor-commits mailing list