summaryrefslogtreecommitdiffstats
path: root/src/providers
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2010-06-18 09:44:20 -0400
committerStephen Gallagher <sgallagh@redhat.com>2010-06-18 10:00:58 -0400
commit01248645166911f3b3c19723f44a84c5a0599e34 (patch)
treefb672193b6316ee7594583e1a1d0f2ae66909cd4 /src/providers
parentb9303e06737e6a024239e9c9a6f05fb9ed0a977e (diff)
downloadsssd2-01248645166911f3b3c19723f44a84c5a0599e34.tar.gz
sssd2-01248645166911f3b3c19723f44a84c5a0599e34.tar.xz
sssd2-01248645166911f3b3c19723f44a84c5a0599e34.zip
Protect against segfault in remove_ldap_connection_callbacks
If sdap_mark_offline() is called before a live connection is established, sdap_fd_events could be NULL, causing a segfault when remove_ldap_connection_callbacks() attempts to free the sdap_fd_events->conncb https://fedorahosted.org/sssd/ticket/545
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/ldap/sdap_fd_events.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/providers/ldap/sdap_fd_events.c b/src/providers/ldap/sdap_fd_events.c
index 45c5bedc..347cf8b8 100644
--- a/src/providers/ldap/sdap_fd_events.c
+++ b/src/providers/ldap/sdap_fd_events.c
@@ -50,7 +50,12 @@ int get_fd_from_ldap(LDAP *ldap, int *fd)
int remove_ldap_connection_callbacks(struct sdap_handle *sh)
{
#ifdef HAVE_LDAP_CONNCB
- talloc_zfree(sh->sdap_fd_events->conncb);
+ /* sdap_fd_events might be NULL here if sdap_mark_offline()
+ * was called before a connection was established.
+ */
+ if (sh->sdap_fd_events) {
+ talloc_zfree(sh->sdap_fd_events->conncb);
+ }
#endif
return EOK;
}