** Description changed:

- Ubuntu version: Ubuntu 14.04.1 LTS
- Package version: libnss-ldap_264-2.2ubuntu4
+ [Impact]
  
- If a process using libnss-ldap calls fork() and SIGPIPE was blocked, the 
atfork() handler in the child process failed to catch the SIGPIPE as it was 
supposed to do, that is in the call to  do_close_no_unbind().  So that, the 
uncaught SIGPIPE will be eventually
- delivered when the child unblocks signals. This usually make the child 
process die unexpectedly.
+  * If a process using libnss-ldap calls fork() and SIGPIPE was blocked, 
+    the atfork() handler in the child process failed to catch the SIGPIPE 
+    as it was supposed to do, that is in the call to  do_close_no_unbind().
+    So that, the uncaught SIGPIPE will be eventually delivered when the
+    child unblocks signals. This usually make the child process die
+    unexpectedly.
  
- I found a well-known Linux vendor fixed this issue with the following
- patch. This unblocks the SIGPIPE before calling do_close_no_unbind() and
- restores the original sigmask afterwards:
+  * This is only reproducible when ldap is configured for STARTTLS.
  
- diff -up nss_ldap/ldap-nss.c nss_ldap/ldap-nss.c
- --- nss_ldap/ldap-nss.c 2009-12-07 20:57:33.000000000 -0500
- +++ nss_ldap/ldap-nss.c 2009-12-07 20:58:56.000000000 -0500
- @@ -532,8 +532,13 @@
-  static void
-  do_atfork_child (void)
-  {
- +  sigset_t unblock, mask;
-    debug ("==> do_atfork_child");
- +  sigemptyset(&unblock);
- +  sigaddset(&unblock, SIGPIPE);
- +  sigprocmask(SIG_UNBLOCK, &unblock, &mask);
-    do_close_no_unbind ();
- +  sigprocmask(SIG_SETMASK, &mask, NULL);
-    _nss_ldap_leave ();
-    debug ("<== do_atfork_child");
-  }
+  * Upstream fix has been long integrated.
  
- I'd like to see this patch applied.
+ [Test Case]
+ 
+  * See https://bugs.launchpad.net/ubuntu/trusty/+source/libnss-
+ ldap/+bug/1397250/comments/19
+ 
+ 
+ [Regression Potential] 
+ 
+  * Fix has been upstream since 2010, and limited to path of child
+    forking, and SIGPIPE is blocked. No consequent bugs or regressions
+    in the upstream blamed on this change.  
+ 
+ 
+ [Other Info]
+  
+  * I'm currently limiting my SRU to trusty, as I'm unable to 
+    recreate the bug on xenial.  Even so, I have tested the fixed 
+    code on xenial to ensure there was no regression with the testcase.
+ 
+  * Will look at fixing xenial too, IFF someone comes forward able to
+    reproduce the bug/validate the fix.

** Changed in: libnss-ldap (Ubuntu Trusty)
       Status: Confirmed => In Progress

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1397250

Title:
  SIGPIPE not caught in do_atfork_child()

To manage notifications about this bug go to:
https://bugs.launchpad.net/nss-ldap/+bug/1397250/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to