|
Lines 1-7
Link Here
|
| 1 |
diff --git src/providers/ldap/ldap_auth.c src/providers/ldap/ldap_auth.c |
1 |
--- src/providers/ldap/ldap_auth.c.ga 2017-07-25 10:09:02.000000000 +0000 |
| 2 |
index 2aacce0..e019cf7 100644 |
2 |
+++ src/providers/ldap/ldap_auth.c 2017-08-03 18:07:22.269610000 +0000 |
| 3 |
--- src/providers/ldap/ldap_auth.c |
|
|
| 4 |
+++ src/providers/ldap/ldap_auth.c |
| 5 |
@@ -37,7 +37,6 @@ |
3 |
@@ -37,7 +37,6 @@ |
| 6 |
#include <sys/time.h> |
4 |
#include <sys/time.h> |
| 7 |
#include <strings.h> |
5 |
#include <strings.h> |
|
Lines 10-18
index 2aacce0..e019cf7 100644
Link Here
|
| 10 |
#include <security/pam_modules.h> |
8 |
#include <security/pam_modules.h> |
| 11 |
|
9 |
|
| 12 |
#include "util/util.h" |
10 |
#include "util/util.h" |
| 13 |
@@ -56,6 +55,22 @@ enum pwexpire { |
11 |
@@ -52,6 +51,22 @@ |
| 14 |
PWEXPIRE_SHADOW |
12 |
|
| 15 |
}; |
13 |
#define LDAP_PWEXPIRE_WARNING_TIME 0 |
| 16 |
|
14 |
|
| 17 |
+struct spwd |
15 |
+struct spwd |
| 18 |
+{ |
16 |
+{ |
|
Lines 22-52
index 2aacce0..e019cf7 100644
Link Here
|
| 22 |
+ long int sp_min; /* Minimum number of days between changes. */ |
20 |
+ long int sp_min; /* Minimum number of days between changes. */ |
| 23 |
+ long int sp_max; /* Maximum number of days between changes. */ |
21 |
+ long int sp_max; /* Maximum number of days between changes. */ |
| 24 |
+ long int sp_warn; /* Number of days to warn user to change |
22 |
+ long int sp_warn; /* Number of days to warn user to change |
| 25 |
+ the password. */ |
23 |
+ the password. */ |
| 26 |
+ long int sp_inact; /* Number of days the account may be |
24 |
+ long int sp_inact; /* Number of days the account may be |
| 27 |
+ inactive. */ |
25 |
+ inactive. */ |
| 28 |
+ long int sp_expire; /* Number of days since 1970-01-01 until |
26 |
+ long int sp_expire; /* Number of days since 1970-01-01 until |
| 29 |
+ account expires. */ |
27 |
+ account expires. */ |
| 30 |
+ unsigned long int sp_flag; /* Reserved. */ |
28 |
+ unsigned long int sp_flag; /* Reserved. */ |
| 31 |
+}; |
29 |
+}; |
| 32 |
+ |
30 |
+ |
| 33 |
static errno_t add_expired_warning(struct pam_data *pd, long exp_time) |
31 |
static errno_t add_expired_warning(struct pam_data *pd, long exp_time) |
| 34 |
{ |
32 |
{ |
| 35 |
int ret; |
33 |
int ret; |
| 36 |
@@ -109,6 +124,7 @@ static errno_t check_pwexpire_kerberos(const char *expire_date, time_t now, |
34 |
@@ -97,9 +112,9 @@ |
| 37 |
return EINVAL; |
|
|
| 38 |
} |
| 39 |
|
| 40 |
+ tzset(); |
| 41 |
expire_time = mktime(&tm); |
| 42 |
if (expire_time == -1) { |
| 43 |
DEBUG(SSSDBG_CRIT_FAILURE, |
| 44 |
@@ -116,12 +132,10 @@ static errno_t check_pwexpire_kerberos(const char *expire_date, time_t now, |
| 45 |
return EINVAL; |
| 46 |
} |
35 |
} |
| 47 |
|
36 |
|
| 48 |
- tzset(); |
|
|
| 49 |
- expire_time -= timezone; |
| 50 |
DEBUG(SSSDBG_TRACE_ALL, |
37 |
DEBUG(SSSDBG_TRACE_ALL, |
| 51 |
- "Time info: tzname[0] [%s] tzname[1] [%s] timezone [%ld] " |
38 |
- "Time info: tzname[0] [%s] tzname[1] [%s] timezone [%ld] " |
| 52 |
- "daylight [%d] now [%ld] expire_time [%ld].\n", tzname[0], |
39 |
- "daylight [%d] now [%ld] expire_time [%ld].\n", tzname[0], |
|
Lines 57-81
index 2aacce0..e019cf7 100644
Link Here
|
| 57 |
|
44 |
|
| 58 |
if (difftime(now, expire_time) > 0.0) { |
45 |
if (difftime(now, expire_time) > 0.0) { |
| 59 |
DEBUG(SSSDBG_CONF_SETTINGS, "Kerberos password expired.\n"); |
46 |
DEBUG(SSSDBG_CONF_SETTINGS, "Kerberos password expired.\n"); |
| 60 |
@@ -924,7 +938,7 @@ void sdap_pam_chpass_handler(struct be_req *breq) |
47 |
@@ -935,7 +950,7 @@ |
| 61 |
DEBUG(SSSDBG_OP_FAILURE, |
|
|
| 62 |
"starting password change request for user [%s].\n", pd->user); |
| 63 |
|
48 |
|
|
|
49 |
state->pd = pd; |
| 50 |
state->be_ctx = params->be_ctx; |
| 64 |
- pd->pam_status = PAM_SYSTEM_ERR; |
51 |
- pd->pam_status = PAM_SYSTEM_ERR; |
| 65 |
+ pd->pam_status = PAM_SERVICE_ERR; |
52 |
+ pd->pam_status = PAM_SERVICE_ERR; |
| 66 |
|
53 |
|
| 67 |
if (pd->cmd != SSS_PAM_CHAUTHTOK && pd->cmd != SSS_PAM_CHAUTHTOK_PRELIM) { |
54 |
switch (pd->cmd) { |
| 68 |
DEBUG(SSSDBG_OP_FAILURE, |
55 |
case SSS_PAM_AUTHENTICATE: |
| 69 |
@@ -1069,7 +1083,7 @@ static void sdap_auth4chpass_done(struct tevent_req *req) |
56 |
@@ -1038,7 +1053,7 @@ |
| 70 |
dp_err = DP_ERR_OFFLINE; |
57 |
state->pd->pam_status = PAM_BAD_ITEM; |
| 71 |
break; |
58 |
break; |
| 72 |
default: |
59 |
default: |
| 73 |
- state->pd->pam_status = PAM_SYSTEM_ERR; |
60 |
- state->pd->pam_status = PAM_SYSTEM_ERR; |
| 74 |
+ state->pd->pam_status = PAM_SERVICE_ERR; |
61 |
+ state->pd->pam_status = PAM_SERVICE_ERR; |
|
|
62 |
break; |
| 75 |
} |
63 |
} |
| 76 |
|
64 |
|
| 77 |
done: |
65 |
@@ -1131,7 +1146,7 @@ |
| 78 |
@@ -1131,7 +1145,7 @@ static void sdap_pam_chpass_done(struct tevent_req *req) |
66 |
DEBUG(SSSDBG_OP_FAILURE, |
|
|
67 |
"starting password change request for user [%s].\n", pd->user); |
| 68 |
|
| 69 |
- pd->pam_status = PAM_SYSTEM_ERR; |
| 70 |
+ pd->pam_status = PAM_SERVICE_ERR; |
| 71 |
|
| 72 |
if (pd->cmd != SSS_PAM_CHAUTHTOK && pd->cmd != SSS_PAM_CHAUTHTOK_PRELIM) { |
| 73 |
DEBUG(SSSDBG_OP_FAILURE, |
| 74 |
@@ -1280,7 +1295,7 @@ |
| 75 |
be_mark_offline(state->be_ctx); |
| 76 |
break; |
| 77 |
default: |
| 78 |
- state->pd->pam_status = PAM_SYSTEM_ERR; |
| 79 |
+ state->pd->pam_status = PAM_SERVICE_ERR; |
| 80 |
break; |
| 81 |
} |
| 82 |
|
| 83 |
@@ -1342,7 +1357,7 @@ |
| 79 |
state->sh, state->dn, |
84 |
state->sh, state->dn, |
| 80 |
lastchanged_name); |
85 |
lastchanged_name); |
| 81 |
if (subreq == NULL) { |
86 |
if (subreq == NULL) { |
|
Lines 84-113
index 2aacce0..e019cf7 100644
Link Here
|
| 84 |
goto done; |
89 |
goto done; |
| 85 |
} |
90 |
} |
| 86 |
|
91 |
|
| 87 |
@@ -1152,7 +1166,7 @@ static void sdap_lastchange_done(struct tevent_req *req) |
92 |
@@ -1368,7 +1383,7 @@ |
|
|
93 |
talloc_free(subreq); |
| 88 |
|
94 |
|
| 89 |
ret = sdap_modify_shadow_lastchange_recv(req); |
|
|
| 90 |
if (ret != EOK) { |
95 |
if (ret != EOK) { |
| 91 |
- state->pd->pam_status = PAM_SYSTEM_ERR; |
96 |
- state->pd->pam_status = PAM_SYSTEM_ERR; |
| 92 |
+ state->pd->pam_status = PAM_SERVICE_ERR; |
97 |
+ state->pd->pam_status = PAM_SERVICE_ERR; |
| 93 |
goto done; |
98 |
goto done; |
| 94 |
} |
99 |
} |
| 95 |
|
100 |
|
| 96 |
@@ -1193,7 +1207,7 @@ void sdap_pam_auth_handler(struct be_req *breq) |
|
|
| 97 |
goto done; |
| 98 |
} |
| 99 |
|
| 100 |
- pd->pam_status = PAM_SYSTEM_ERR; |
| 101 |
+ pd->pam_status = PAM_SERVICE_ERR; |
| 102 |
|
| 103 |
switch (pd->cmd) { |
| 104 |
case SSS_PAM_AUTHENTICATE: |
| 105 |
@@ -1291,7 +1305,7 @@ static void sdap_pam_auth_done(struct tevent_req *req) |
| 106 |
state->pd->pam_status = PAM_NEW_AUTHTOK_REQD; |
| 107 |
break; |
| 108 |
default: |
| 109 |
- state->pd->pam_status = PAM_SYSTEM_ERR; |
| 110 |
+ state->pd->pam_status = PAM_SERVICE_ERR; |
| 111 |
dp_err = DP_ERR_FATAL; |
| 112 |
} |
| 113 |
|