** Description changed:

- Description:    Ubuntu 14.04.4 LTS
- Release:        14.04
- 
- openvpn-auth-ldap=2.0.3-5.1
- 
+ [Impact] 
  There is a timeout bug in the openvpn-auth-ldap package that causes
  OpenVPN to crash when the network timeout is exceeded.
  
  The openvpn-auth-ldap plugin is not correctly checking the error codes
  from ldap_result. As a result, it is not catching timeouts, and proceeds
  as if ldap_result was successful. This results in a segfault when access
  to the result (which is set to Null) is attempted.
  
- You can see this bug referenced here:
+ Network timeouts are somewhat common and services should be resilient to
+ it. Having a service as a whole crash because of such an occurrence is
+ not acceptable.
  
- https://github.com/threerings/openvpn-auth-ldap/issues/11
+ This upload fixes the problem by simply including the timeout error case
+ in an existing check. It was clearly just an oversight in that one call,
+ as the remainder of the code does handle timeout errors. It was just
+ never reached.
  
- And a fix mentioned here:
+ [Test Case]
  
- https://github.com/threerings/openvpn-auth-ldap/pull/53
+  * detailed instructions how to reproduce the bug
  
- The above patch is not compatible with the source provided with 14.04,
- so I have updated the patch to work with the 14.04 source. I have
- provided it below.
+  * these should allow someone who is not familiar with the affected
+    package to reproduce the bug and verify that the updated package fixes
+    the problem.
  
- I would appreciate if a package with the fix could be released.
+ [Regression Potential] 
+ The patch is very focused. I believe the biggest regression potential lies in 
the fact that this package hasn't been rebuilt very often. This new build will 
be done with the surrounding system libraries having changed a lot since the 
last time this package was built.
  
- -Aaron Peschel
- 
- Index: openvpn-auth-ldap/src/LFLDAPConnection.m
- ===================================================================
- --- openvpn-auth-ldap.orig/src/LFLDAPConnection.m       2016-07-12
- 23:24:14.710216000 +0000
- +++ openvpn-auth-ldap/src/LFLDAPConnection.m    2016-07-12
- 23:24:48.394216000 +0000
- @@ -175,7 +175,7 @@
-         /* Wait for the result */
-         timeout.tv_sec = _timeout;
-         timeout.tv_usec = 0;
- -       if (ldap_result(ldapConn, msgid, 1, &timeout, &res) == -1) {
- +       if (ldap_result(ldapConn, msgid, 1, &timeout, &res) <= 0) {
-                 err = ldap_get_errno(ldapConn);
-                 if (err == LDAP_TIMEOUT)
-                         ldap_abandon_ext(ldapConn, msgid, NULL, NULL);
- @@ -383,7 +383,7 @@
-         }
- 
-         /* Wait for the result */
- -       if (ldap_result(ldapConn, msgid, 1, &timeout, &res) == -1) {
- +       if (ldap_result(ldapConn, msgid, 1, &timeout, &res) <= 0) {
-                 err = ldap_get_errno(ldapConn);
-                 if (err == LDAP_TIMEOUT)
-                         ldap_abandon_ext(ldapConn, msgid, NULL, NULL);
- 
- ProblemType: Crash
- DistroRelease: Ubuntu 14.04
- Package: openvpn 2.3.2-7ubuntu3.1
- ProcVersionSignature: Ubuntu 3.13.0-74.118-generic 3.13.11-ckt30
- Uname: Linux 3.13.0-74-generic x86_64
- ApportVersion: 2.14.1-0ubuntu3.21
- Architecture: amd64
- AssertionMessage: openvpn: sasl.c:257: ldap_parse_sasl_bind_result: Assertion 
`res != ((void *)0)' failed.
- Date: Tue Jul 12 21:35:10 2016
- Ec2AMI: ami-9abea4fb
- Ec2AMIManifest: (unknown)
- Ec2AvailabilityZone: us-west-2c
- Ec2InstanceType: t2.small
- Ec2Kernel: unavailable
- Ec2Ramdisk: unavailable
- ExecutablePath: /usr/sbin/openvpn
- ProcCmdline: /usr/sbin/openvpn --writepid /run/openvpn/foxpass.pid --daemon 
ovpn-foxpass --cd /etc/openvpn --config /etc/openvpn/foxpass.conf 
--script-security 2
- ProcEnviron:
-  TERM=screen-256color
-  PATH=(custom, no user)
-  LANG=en_US.UTF-8
- Signal: 6
- SourcePackage: openvpn
- StacktraceTop:
-  __assert_fail_base (fmt=0x7f3cd7f203b8 "%s%s%s:%u: %s%sAssertion `%s' 
failed.\n%n", assertion=assertion@entry=0x7f3cd796d9bd "res != ((void *)0)", 
file=file@entry=0x7f3cd796e100 "sasl.c", line=line@entry=257, 
function=function@entry=0x7f3cd796e3e0 "ldap_parse_sasl_bind_result") at 
assert.c:92
-  __GI___assert_fail (assertion=0x7f3cd796d9bd "res != ((void *)0)", 
file=0x7f3cd796e100 "sasl.c", line=257, function=0x7f3cd796e3e0 
"ldap_parse_sasl_bind_result") at assert.c:101
-  ldap_parse_sasl_bind_result () from 
/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2
-  ?? () from /usr/lib/openvpn/openvpn-auth-ldap.so
-  connect_ldap () from /usr/lib/openvpn/openvpn-auth-ldap.so
- Title: openvpn assert failure: openvpn: sasl.c:257: 
ldap_parse_sasl_bind_result: Assertion `res != ((void *)0)' failed.
- UpgradeStatus: No upgrade log present (probably fresh install)
- UserGroups:
+ [Other Info]
+ There are two places in the code which mishandled the return code of 
ldap_result(). They are essentially identical, but the test case I provided 
only covers one of them. I believe that to be good enough, as the other code 
path will require setting up an LDAP server with a populated directory.

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1602813

Title:
  openvpn-auth-ldap causing segfault on network timeout

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openvpn-auth-ldap/+bug/1602813/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs

Reply via email to