Bug 902436

Summary: possible segfault when backend callback is removed
Product: Red Hat Enterprise Linux 6 Reporter: Pavel Březina <pbrezina>
Component: sssdAssignee: Jakub Hrozek <jhrozek>
Status: CLOSED ERRATA QA Contact: Kaushik Banerjee <kbanerje>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4CC: dpal, grajaiya, jgalipea, nikolai.kondrashov, okos, pbrezina, tlavigne
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: sssd-1.9.2-78.el6 Doc Type: Bug Fix
Doc Text:
No documentation needed.
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 09:43:45 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 905536    

Description Pavel Březina 2013-01-21 16:46:11 UTC
This bug is created as a clone of upstream ticket:
https://fedorahosted.org/sssd/ticket/1776

Our API supports removing backend callback, but it doesn't work correctly. It still remains in DLIST which causes segfault during next execution of the callbacks. This currently affects sudo first full refresh, when online callbacks are executed several times before successful connection.

How to reproduce:
{{{
1. configure sssd with sudo support in such way it cannot connect to the server
   - tested with incorrect bindpw in ldap_default_authtok, but unreachable hostname should do the trick
2. run sssd
3. tell sssd to go online
   - kill -s SIGUSR2 $(pidof sssd_be)
   - sssd_be crashes when it tries to go online for second time
}}}

Comment 1 Nikolai Kondrashov 2013-01-21 17:27:04 UTC
As I understood it with the help from Jakub, a segfault could happen on repeated *failed* attempts to go online with sudo (and possibly other) backends configured.

Such attempts could be triggered by changed network settings, such as occur on connecting to a wired or wireless network or receiving a new DHCP lease. (External) wireless network roaming could trigger this.

A real world scenario could be an offline user moving between wireless networks, say in an airport. Or, possibly, a user on a corporate network going through several DHCP renewals while waiting for the directory server to come back online.

I'm not sure, what the real impact for end user would be, considering that SSSD is restarted in case of segfaults, but I would expect at least some short lock-ups while SSSD is down.

Although I'm quite new to SSSD and don't know it well yet, I'd say this is quite serious and has a good screw-up potential.

Comment 4 Nikolai Kondrashov 2013-01-28 09:50:29 UTC
Verified as fixed with the following packages:
sssd-client-1.9.2-82.el6.x86_64
sssd-1.9.2-82.el6.x86_64
sudo-1.8.6p3-7.el6.x86_64
libsss_idmap-1.9.2-82.el6.x86_64
libsss_sudo-1.9.2-82.el6.x86_64

Relevant sudo suite output:
:: [   PASS   ] :: offline_repeated_failure_getting_online

Comment 6 errata-xmlrpc 2013-02-21 09:43:45 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2013-0508.html