third_party: Update pam_wrapper to version 1.0.7
authorAndreas Schneider <asn@samba.org>
Thu, 20 Sep 2018 07:13:09 +0000 (09:13 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Tue, 2 Oct 2018 12:12:13 +0000 (14:12 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
buildtools/wafsamba/samba_third_party.py
third_party/pam_wrapper/libpamtest.c
third_party/pam_wrapper/pam_wrapper.c
third_party/pam_wrapper/wscript

index f86d38710c4a54b228272571c26c08c3e90d128f..f869af535bb899c130bb6e9cda89777460796c7c 100644 (file)
@@ -62,5 +62,5 @@ Build.BuildContext.CHECK_UID_WRAPPER = CHECK_UID_WRAPPER
 
 @conf
 def CHECK_PAM_WRAPPER(conf):
-    return conf.CHECK_BUNDLED_SYSTEM_PKG('pam_wrapper', minversion='1.0.4')
+    return conf.CHECK_BUNDLED_SYSTEM_PKG('pam_wrapper', minversion='1.0.7')
 Build.BuildContext.CHECK_PAM_WRAPPER = CHECK_PAM_WRAPPER
index 0a26c19c9ba2c17e5b6d7fa0d1a07c6c8c3bf8eb..4474736d688bd0fe9652cac1ba909fbdf05f502e 100644 (file)
@@ -214,12 +214,11 @@ static int pamtest_simple_conv(int num_msg,
                               struct pam_response **response,
                               void *appdata_ptr)
 {
-       int i, ri = 0;
+       int i = 0;
        int ret;
        struct pam_response *reply = NULL;
        const char *prompt;
-       struct pamtest_conv_ctx *cctx = \
-                                   (struct pamtest_conv_ctx *) appdata_ptr;
+       struct pamtest_conv_ctx *cctx = (struct pamtest_conv_ctx *)appdata_ptr;
 
        if (cctx == NULL) {
                return PAM_CONV_ERR;
@@ -241,15 +240,12 @@ static int pamtest_simple_conv(int num_msg,
 
                        if (reply != NULL) {
                                if (prompt != NULL) {
-                                       ret = add_to_reply(&reply[ri], prompt);
+                                       ret = add_to_reply(&reply[i], prompt);
                                        if (ret != PAM_SUCCESS) {
                                                free_reply(reply, num_msg);
                                                return ret;
                                        }
-                               } else {
-                                       reply[ri].resp = NULL;
                                }
-                               ri++;
                        }
 
                        cctx->echo_off_idx++;
@@ -264,18 +260,25 @@ static int pamtest_simple_conv(int num_msg,
 
                        if (reply != NULL) {
                                if (prompt != NULL) {
-                                       ret = add_to_reply(&reply[ri], prompt);
+                                       ret = add_to_reply(&reply[i], prompt);
                                        if (ret != PAM_SUCCESS) {
                                                free_reply(reply, num_msg);
                                                return ret;
                                        }
                                }
-                               ri++;
                        }
 
                        cctx->echo_on_idx++;
                        break;
                case PAM_ERROR_MSG:
+                       if (reply != NULL) {
+                               ret = add_to_reply(&reply[i], msgm[i]->msg);
+                               if (ret != PAM_SUCCESS) {
+                                       free_reply(reply, num_msg);
+                                       return ret;
+                               }
+                       }
+
                        if (cctx->data->out_err != NULL) {
                                memcpy(cctx->data->out_err[cctx->err_idx],
                                       msgm[i]->msg,
@@ -285,6 +288,14 @@ static int pamtest_simple_conv(int num_msg,
                        }
                        break;
                case PAM_TEXT_INFO:
+                       if (reply != NULL) {
+                               ret = add_to_reply(&reply[i], msgm[i]->msg);
+                               if (ret != PAM_SUCCESS) {
+                                       free_reply(reply, num_msg);
+                                       return ret;
+                               }
+                       }
+
                        if (cctx->data->out_info != NULL) {
                                memcpy(cctx->data->out_info[cctx->info_idx],
                                       msgm[i]->msg,
@@ -298,7 +309,7 @@ static int pamtest_simple_conv(int num_msg,
                }
        }
 
-       if (response && ri > 0) {
+       if (response != NULL) {
                *response = reply;
        } else {
                free(reply);
index 8064954ff47d62bf762892dc0ad9cfa179ba5739..48d2c2ae566a6a20a74e2caec5ff448c706aa44b 100644 (file)
@@ -300,7 +300,15 @@ static void *pwrap_load_lib_handle(enum pwrap_lib lib)
        void *handle = NULL;
 
 #ifdef RTLD_DEEPBIND
-       flags |= RTLD_DEEPBIND;
+       const char *env = getenv("LD_PRELOAD");
+
+       /* Don't do a deepbind if we run with libasan */
+       if (env != NULL && strlen(env) < PATH_MAX) {
+               const char *p = strstr(env, "libasan.so");
+               if (p == NULL) {
+                       flags |= RTLD_DEEPBIND;
+               }
+       }
 #endif
 
        switch (lib) {
@@ -896,8 +904,6 @@ static void pwrap_init(void)
 
        PWRAP_LOG(PWRAP_LOG_DEBUG, "Initialize pam_wrapper");
 
-       pwrap_clean_stale_dirs(tmp_config_dir);
-
        pwrap.config_dir = strdup(tmp_config_dir);
        if (pwrap.config_dir == NULL) {
                PWRAP_LOG(PWRAP_LOG_ERROR,
@@ -945,7 +951,7 @@ static void pwrap_init(void)
        rc = mkdir(libpam_path, 0755);
        if (rc != 0) {
                PWRAP_LOG(PWRAP_LOG_ERROR,
-                         "Failed to create pam_wrapper config dir: %s - %s",
+                         "Failed to create path for libpam: %s - %s",
                          tmp_config_dir, strerror(errno));
                p_rmdirs(pwrap.config_dir);
                exit(1);
index ddc4bf85e11c623cc538dff93be4e9276a3d5d2c..f9ad73703de2fb7d92740d49358a67984d488272 100644 (file)
@@ -2,7 +2,7 @@
 
 import os
 
-VERSION="1.0.6"
+VERSION="1.0.7"
 
 def find_library(library_names, lookup_paths):
     for directory in lookup_paths: