author | Alan Coopersmith <Alan.Coopersmith@Oracle.COM> |
Sun, 31 Jan 2016 19:31:13 -0800 | |
changeset 5400 | 1199f8e91f50 |
permissions | -rw-r--r-- |
5400
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
1 |
Fixes for bugs: |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
2 |
15201967 SUNBT5015296 xscreensaver doesn't audit |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
3 |
15326852 SUNBT6417168 xscreensaver loops while trying to unlock a session |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
4 |
for a user whose password was expired |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
5 |
15452882 SUNBT6654320 xscreensaver dies due to memory corruption |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
6 |
15688159 SUNBT7008058 screensaver continues to accept old password for |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
7 |
existing sessions after password changed |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
8 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
9 |
Also ensures that Xscreensaver on Solaris only uses PAM, and never attempts |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
10 |
to fallback to direct use of getpwent(), which isn't audited |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
11 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
12 |
Upstream status unknown. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
13 |
--- |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
14 |
driver/Makefile.in | 2 +- |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
15 |
driver/passwd-pam.c | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++- |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
16 |
driver/passwd.c | 4 + |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
17 |
3 files changed, 161 insertions(+), 3 deletions(-) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
18 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
19 |
diff --git a/driver/Makefile.in b/driver/Makefile.in |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
20 |
--- a/driver/Makefile.in |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
21 |
+++ b/driver/Makefile.in |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
22 |
@@ -214,7 +214,7 @@ PDF2JPEG_LIBS = -framework Cocoa |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
23 |
SAVER_LIBS = $(LIBS) $(X_LIBS) $(XMU_LIBS) @SAVER_LIBS@ \ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
24 |
$(XDPMS_LIBS) $(XINERAMA_LIBS) $(GL_LIBS) $(X_PRE_LIBS) \ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
25 |
-lXt -lX11 -lXext $(X_EXTRA_LIBS) \ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
26 |
- $(PASSWD_LIBS) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
27 |
+ -lbsm $(PASSWD_LIBS) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
28 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
29 |
CMD_LIBS = $(LIBS) $(X_LIBS) \ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
30 |
$(X_PRE_LIBS) -lX11 -lXext $(X_EXTRA_LIBS) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
31 |
diff --git a/driver/passwd-pam.c b/driver/passwd-pam.c |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
32 |
--- a/driver/passwd-pam.c |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
33 |
+++ b/driver/passwd-pam.c |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
34 |
@@ -47,6 +47,8 @@ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
35 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
36 |
#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
37 |
# include <deflt.h> |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
38 |
+# include <bsm/adt.h> |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
39 |
+# include <bsm/adt_event.h> |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
40 |
#endif |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
41 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
42 |
extern char *blurb(void); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
43 |
@@ -81,6 +83,9 @@ extern void unblock_sigchld (void); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
44 |
#undef countof |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
45 |
#define countof(x) (sizeof((x))/sizeof(*(x))) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
46 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
47 |
+static struct pam_response *reply = 0; /*making it global so we can free it */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
48 |
+static int replies = 0; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
49 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
50 |
/* Some time between Red Hat 4.2 and 7.0, the words were transposed |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
51 |
in the various PAM_x_CRED macro names. Yay! |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
52 |
*/ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
53 |
@@ -178,6 +183,124 @@ Bool pam_priv_init (int argc, char **argv, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
54 |
*/ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
55 |
static void *suns_pam_implementation_blows = 0; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
56 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
57 |
+#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
58 |
+#include <syslog.h> |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
59 |
+#include <bsm/adt.h> |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
60 |
+#include <bsm/adt_event.h> |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
61 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
62 |
+static Bool audit_flag_global = True; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
63 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
64 |
+/* |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
65 |
+ * audit_lock - audit entry to screenlock |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
66 |
+ * |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
67 |
+ * Entry Process running with appropriate privilege to generate |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
68 |
+ * audit records and real uid of the user. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
69 |
+ * |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
70 |
+ * Exit ADT_screenlock audit record written. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
71 |
+ */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
72 |
+void |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
73 |
+audit_lock(void) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
74 |
+{ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
75 |
+ adt_session_data_t *ah; /* audit session handle */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
76 |
+ adt_event_data_t *event; /* audit event handle */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
77 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
78 |
+ /* Audit start of screen lock -- equivalent to logout ;-) */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
79 |
+ if (adt_start_session(&ah, NULL, ADT_USE_PROC_DATA) != 0) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
80 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
81 |
+ syslog(LOG_AUTH | LOG_ALERT, "adt_start_session: %m"); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
82 |
+ return; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
83 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
84 |
+ if ((event = adt_alloc_event(ah, ADT_screenlock)) == NULL) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
85 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
86 |
+ syslog(LOG_AUTH | LOG_ALERT, "adt_alloc_event(ADT_screenlock): %m"); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
87 |
+ } else { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
88 |
+ if (adt_put_event(event, ADT_SUCCESS, ADT_SUCCESS) != 0) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
89 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
90 |
+ syslog(LOG_AUTH | LOG_ALERT, "adt_put_event(ADT_screenlock): %m"); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
91 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
92 |
+ adt_free_event(event); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
93 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
94 |
+ (void) adt_end_session(ah); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
95 |
+} |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
96 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
97 |
+/* |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
98 |
+ * audit_unlock - audit screen unlock |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
99 |
+ * |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
100 |
+ * Entry Process running with appropriate privilege to generate |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
101 |
+ * audit records and real uid of the user. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
102 |
+ * pam_status = PAM error code; reason for failure. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
103 |
+ * |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
104 |
+ * Exit ADT_screenunlock audit record written. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
105 |
+ */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
106 |
+static void |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
107 |
+audit_unlock(int pam_status) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
108 |
+{ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
109 |
+ adt_session_data_t *ah; /* audit session handle */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
110 |
+ adt_event_data_t *event; /* audit event handle */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
111 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
112 |
+ if (adt_start_session(&ah, NULL, ADT_USE_PROC_DATA) != 0) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
113 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
114 |
+ syslog(LOG_AUTH | LOG_ALERT, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
115 |
+ "adt_start_session(ADT_screenunlock): %m"); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
116 |
+ return; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
117 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
118 |
+ if ((event = adt_alloc_event(ah, ADT_screenunlock)) == NULL) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
119 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
120 |
+ syslog(LOG_AUTH | LOG_ALERT, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
121 |
+ "adt_alloc_event(ADT_screenunlock): %m"); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
122 |
+ } else { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
123 |
+ if (adt_put_event(event, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
124 |
+ pam_status == PAM_SUCCESS ? ADT_SUCCESS : ADT_FAILURE, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
125 |
+ pam_status == PAM_SUCCESS ? ADT_SUCCESS |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
126 |
+ : ADT_FAIL_PAM + pam_status) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
127 |
+ != 0) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
128 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
129 |
+ syslog(LOG_AUTH | LOG_ALERT, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
130 |
+ "adt_put_event(ADT_screenunlock(%s): %m", |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
131 |
+ pam_strerror(NULL, pam_status)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
132 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
133 |
+ adt_free_event(event); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
134 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
135 |
+ (void) adt_end_session(ah); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
136 |
+} |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
137 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
138 |
+/* |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
139 |
+ * audit_passwd - audit password change |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
140 |
+ * Entry Process running with appropriate privilege to generate |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
141 |
+ * audit records and real uid of the user. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
142 |
+ * pam_status = PAM error code; reason for failure. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
143 |
+ * |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
144 |
+ * Exit ADT_passwd audit record written. |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
145 |
+ */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
146 |
+static void |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
147 |
+audit_passwd(int pam_status) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
148 |
+{ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
149 |
+ adt_session_data_t *ah; /* audit session handle */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
150 |
+ adt_event_data_t *event; /* audit event handle */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
151 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
152 |
+ if (adt_start_session(&ah, NULL, ADT_USE_PROC_DATA) != 0) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
153 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
154 |
+ syslog(LOG_AUTH | LOG_ALERT, "adt_start_session(ADT_passwd): %m"); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
155 |
+ return; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
156 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
157 |
+ if ((event = adt_alloc_event(ah, ADT_passwd)) == NULL) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
158 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
159 |
+ syslog(LOG_AUTH | LOG_ALERT, "adt_alloc_event(ADT_passwd): %m"); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
160 |
+ } else { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
161 |
+ if (adt_put_event(event, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
162 |
+ pam_status == PAM_SUCCESS ? ADT_SUCCESS : ADT_FAILURE, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
163 |
+ pam_status == PAM_SUCCESS ? ADT_SUCCESS |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
164 |
+ : ADT_FAIL_PAM + pam_status) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
165 |
+ != 0) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
166 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
167 |
+ syslog(LOG_AUTH | LOG_ALERT, "adt_put_event(ADT_passwd(%s): %m", |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
168 |
+ pam_strerror(NULL, pam_status)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
169 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
170 |
+ adt_free_event(event); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
171 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
172 |
+ (void) adt_end_session(ah); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
173 |
+} |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
174 |
+#endif /* sun */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
175 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
176 |
/** |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
177 |
* This function is the PAM conversation driver. It conducts a full |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
178 |
@@ -231,6 +354,12 @@ pam_try_unlock(saver_info *si, Bool verbose_p, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
179 |
fprintf (stderr, "%s: pam_start (\"%s\", \"%s\", ...) ==> %d (%s)\n", |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
180 |
blurb(), service, si->user, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
181 |
status, PAM_STRERROR (pamh, status)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
182 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
183 |
+#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
184 |
+ if (audit_flag_global) /* We want one audit lock log per lock */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
185 |
+ audit_lock (); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
186 |
+#endif /**sun*/ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
187 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
188 |
if (status != PAM_SUCCESS) goto DONE; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
189 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
190 |
#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
191 |
@@ -307,6 +436,14 @@ pam_try_unlock(saver_info *si, Bool verbose_p, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
192 |
# endif /* HAVE_SIGTIMEDWAIT */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
193 |
unblock_sigchld(); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
194 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
195 |
+#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
196 |
+ audit_unlock(pam_auth_status); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
197 |
+ if (pam_auth_status == PAM_SUCCESS) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
198 |
+ audit_flag_global = True; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
199 |
+ else |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
200 |
+ audit_flag_global = False; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
201 |
+#endif /*sun*/ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
202 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
203 |
#ifdef HAVE_XSCREENSAVER_LOCK |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
204 |
/* Send status message to unlock dialog */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
205 |
if (pam_auth_status == PAM_SUCCESS) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
206 |
@@ -354,7 +491,14 @@ pam_try_unlock(saver_info *si, Bool verbose_p, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
207 |
write_to_child (si, "ul_acct_ok", PAM_STRERROR(pamh, acct_rc)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
208 |
} |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
209 |
else |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
210 |
- write_to_child (si, "ul_acct_fail", PAM_STRERROR(pamh, acct_rc)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
211 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
212 |
+#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
213 |
+ /* Only in failure of pam_acct_mgmt case we call audit */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
214 |
+ audit_unlock (acct_rc); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
215 |
+#endif /*sun*/ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
216 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
217 |
+ write_to_child (si, "ul_acct_fail", PAM_STRERROR(pamh, acct_rc)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
218 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
219 |
if (verbose_p) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
220 |
sleep (1); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
221 |
#endif |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
222 |
@@ -383,6 +527,10 @@ pam_try_unlock(saver_info *si, Bool verbose_p, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
223 |
fprintf (stderr, "%s: pam_chauthtok (...) ==> %d (%s)\n", |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
224 |
blurb(), chauth_rc, PAM_STRERROR(pamh, chauth_rc)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
225 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
226 |
+#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
227 |
+ audit_passwd (chauth_rc); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
228 |
+#endif /* sun */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
229 |
+ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
230 |
if (chauth_rc != PAM_SUCCESS) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
231 |
{ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
232 |
pam_auth_status = chauth_rc; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
233 |
@@ -419,7 +567,13 @@ pam_try_unlock(saver_info *si, Bool verbose_p, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
234 |
write_to_child (si, "ul_setcred_ok", PAM_STRERROR(pamh, setcred_rc)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
235 |
} |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
236 |
else |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
237 |
- write_to_child (si, "ul_setcred_fail", PAM_STRERROR(pamh, setcred_rc)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
238 |
+ { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
239 |
+#ifdef __sun |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
240 |
+ /* Only in failure of pam_setcred() case we call audit. */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
241 |
+ audit_unlock (setcred_rc); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
242 |
+#endif /*sun*/ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
243 |
+ write_to_child (si, "ul_setcred_fail", PAM_STRERROR(pamh, setcred_rc)); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
244 |
+ } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
245 |
if (verbose_p) |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
246 |
sleep (1); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
247 |
#endif |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
248 |
diff --git a/driver/passwd.c b/driver/passwd.c |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
249 |
--- a/driver/passwd.c |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
250 |
+++ b/driver/passwd.c |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
251 |
@@ -79,9 +79,11 @@ extern void pam_try_unlock (saver_info *si, Bool verbose_p, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
252 |
extern Bool ext_priv_init (int argc, char **argv, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
253 |
extern Bool ext_passwd_valid_p (const char *typed_passwd, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
254 |
#endif |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
255 |
+#ifndef __sun /* Only use PAM on Solaris, not direct getpwent */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
256 |
extern Bool pwent_lock_init (int argc, char **argv, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
257 |
extern Bool pwent_priv_init (int argc, char **argv, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
258 |
extern Bool pwent_passwd_valid_p (const char *typed_passwd, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
259 |
+#endif |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
260 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
261 |
Bool lock_priv_init (int argc, char **argv, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
262 |
Bool lock_init (int argc, char **argv, Bool verbose_p); |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
263 |
@@ -105,8 +107,10 @@ struct auth_methods methods[] = { |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
264 |
{ "external", 0, ext_priv_init, ext_passwd_valid_p, 0, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
265 |
False, False }, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
266 |
# endif |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
267 |
+# ifndef __sun /* Only use PAM on Solaris, not direct getpwent */ |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
268 |
{ "normal", pwent_lock_init, pwent_priv_init, pwent_passwd_valid_p, 0, |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
269 |
False, False } |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
270 |
+# endif |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
271 |
}; |
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
272 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
273 |
|
1199f8e91f50
22592978 Move xscreensaver to the Userland gate
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff
changeset
|
274 |