From 60126fe9b9f82a372f614d3c0868d24839c610e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
Date: Tue, 31 Mar 2020 13:42:11 +0200
Subject: [PATCH] proxy: set pwfield to x for files library

Resolves:
https://pagure.io/SSSD/sssd/issue/4174
---
 src/confdb/confdb.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c
index 54cc604a02..0fca69a530 100644
--- a/src/confdb/confdb.c
+++ b/src/confdb/confdb.c
@@ -1029,6 +1029,18 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb,
         domain->pwfield = "x";
     }
 
+    if (domain->provider != NULL && strcmp(domain->provider, "proxy") == 0) {
+        /* The password field must be  reported as 'x' for proxy provider
+         * using files library, else pam_unix won't
+         * authenticate this entry. */
+        tmp = ldb_msg_find_attr_as_string(res->msgs[0],
+                                          CONFDB_PROXY_LIBNAME,
+                                          NULL);
+        if (tmp != NULL && strcasecmp(tmp, "files") == 0) {
+            domain->pwfield = "x";
+        }
+    }
+
     if (!domain->enumerate) {
         DEBUG(SSSDBG_TRACE_FUNC, "No enumeration for [%s]!\n", domain->name);
         DEBUG(SSSDBG_TRACE_FUNC,
