forked from jengelh/sssd
38f473b96f
bnc#705768,bnc#709747 (forwarded request 77655 from rhafer) OBS-URL: https://build.opensuse.org/request/show/77656 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/sssd?expand=0&rev=28
54 lines
1.9 KiB
Diff
54 lines
1.9 KiB
Diff
From 151681511c4519463c2fe10c656db29a12c01821 Mon Sep 17 00:00:00 2001
|
|
From: Simo Sorce <ssorce@redhat.com>
|
|
Date: Thu, 28 Jul 2011 15:15:26 -0400
|
|
Subject: sss_client: avoid leaking file descriptors
|
|
|
|
If a pam or nss module is dlcolse()d and unloaded we were leaking
|
|
the file descriptor used to communicate to sssd in the process.
|
|
|
|
Make sure the fucntion used to close the socket file descriptor is
|
|
called on dlclose()
|
|
|
|
Silence autoconf 2.28 warnings (Patch by Jakub Hrozek)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 84b83eb..c0b7f8f 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -170,6 +170,18 @@ AC_CHECK_HEADERS([sys/inotify.h])
|
|
|
|
AC_CHECK_HEADERS([sasl/sasl.h],,AC_MSG_ERROR([Could not find SASL headers]))
|
|
|
|
+AC_CACHE_CHECK([whether compiler supports __attribute__((destructor))],
|
|
+ sss_client_cv_attribute_destructor,
|
|
+ [AC_COMPILE_IFELSE(
|
|
+ [AC_LANG_SOURCE([__attribute__((destructor)) static void cleanup(void) { }])],
|
|
+ sss_client_cv_attribute_destructor=yes)
|
|
+ ])
|
|
+
|
|
+if test x"$sss_client_cv_attribute_destructor" = xyes ; then
|
|
+ AC_DEFINE(HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR, 1,
|
|
+ [whether compiler supports __attribute__((destructor))])
|
|
+fi
|
|
+
|
|
PKG_CHECK_MODULES([CHECK], [check >= 0.9.5], [have_check=1], [have_check=])
|
|
if test x$have_check = x; then
|
|
AC_MSG_WARN([Without the 'CHECK' libraries, you will be unable to run all tests in the 'make check' suite])
|
|
diff --git a/src/sss_client/common.c b/src/sss_client/common.c
|
|
index c17629a..5f6af41 100644
|
|
--- a/src/sss_client/common.c
|
|
+++ b/src/sss_client/common.c
|
|
@@ -55,6 +55,9 @@
|
|
int sss_cli_sd = -1; /* the sss client socket descriptor */
|
|
struct stat sss_cli_sb; /* the sss client stat buffer */
|
|
|
|
+#if HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR
|
|
+__attribute__((destructor))
|
|
+#endif
|
|
static void sss_cli_close_socket(void)
|
|
{
|
|
if (sss_cli_sd != -1) {
|
|
--
|
|
1.7.3.4
|
|
|