]> git.pld-linux.org Git - packages/util-linux.git/blame - util-linux-login.patch
switch to new conditional builds macros (bcond_on_ -> _with_/bcond_off_ -> _without_...
[packages/util-linux.git] / util-linux-login.patch
CommitLineData
eab95ebb
AF
1--- util-linux-2.10l/lib/pathnames.h.wiget Wed Apr 26 20:17:29 2000
2+++ util-linux-2.10l/lib/pathnames.h Wed Apr 26 20:17:29 2000
f196f300 3@@ -105,7 +105,7 @@
baf031b2
AF
4 #define SECURETTY "/etc/securetty"
5 #define _PATH_UTMP "/var/run/utmpx"
6 #define _PATH_WTMP LOGDIR "/wtmpx"
f196f300
AF
7-#define _PATH_WTMPLOCK "/var/log/wtmpxlock"
8+#define _PATH_WTMPLOCK "/var/lock/wtmpxlock"
baf031b2
AF
9
10 /* no more . in DEFPATH */
11 #define _PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin"
eab95ebb
AF
12--- util-linux-2.10l/login-utils/login.c.wiget Tue Mar 21 00:18:38 2000
13+++ util-linux-2.10l/login-utils/login.c Wed Apr 26 20:22:32 2000
67dbd305 14@@ -154,7 +154,7 @@
15
16 #define SLEEP_EXIT_TIMEOUT 5
17
18-#ifdef __linux__
baf031b2 19+#ifndef __linux__
67dbd305 20 #define DO_PS_FIDDLING
21 #endif
22
f196f300 23@@ -300,6 +300,40 @@
67dbd305 24 return 0;
25 }
26
27+#if USE_PAM
28+#define _PATH_BTMPX "/var/log/btmpx"
29+static void logbtmp(const char *line, const char *username, const char *hostname)
30+{
31+ struct utmp ut;
32+
33+ memset(&ut, 0, sizeof(ut));
34+
35+ strncpy(ut.ut_user, username, sizeof(ut.ut_user));
36+
37+ strncpy(ut.ut_id, line + 3, sizeof(ut.ut_id));
38+ strncpy(ut.ut_line, line, sizeof(ut.ut_line));
39+ ut.ut_line[sizeof(ut.ut_line)-1] = 0;
40+
41+#if defined(_HAVE_UT_TV)
42+ gettimeofday(&ut.ut_tv, NULL);
43+#else
44+ time(&t) ;
45+ ut.ut_time = t; /* ut_time is not always a time_t */
46+#endif
47+
48+ ut.ut_type = LOGIN_PROCESS; /* XXX doesn't matter */
49+ ut.ut_pid = getpid();
50+ if (hostname) {
51+ strncpy(ut.ut_host, hostname, sizeof(ut.ut_host));
52+ ut.ut_host[sizeof(ut.ut_host)-1] = 0;
53+ if (hostaddress.h_addr_list)
54+ memcpy(&ut.ut_addr, hostaddress.h_addr_list[0],
55+ sizeof(ut.ut_addr));
56+ }
57+
58+ updwtmp(_PATH_BTMPX, &ut);
59+}
60+#endif /* USE_PAM */
67dbd305 61
62 int
63 main(int argc, char **argv)
f196f300 64@@ -485,8 +519,6 @@
67dbd305 65 else
eab95ebb
AF
66 tty = ttyn;
67
67dbd305 68- openlog("login", LOG_ODELAY, LOG_AUTHPRIV);
69-
70 #if 0
71 /* other than iso-8859-1 */
72 printf("\033(K");
eab95ebb 73@@ -555,7 +587,8 @@
67dbd305 74 (retcode == PAM_AUTHINFO_UNAVAIL))) {
75 pam_get_item(pamh, PAM_USER, (const void **) &username);
76 syslog(LOG_NOTICE,_("FAILED LOGIN %d FROM %s FOR %s, %s"),
77- failcount, hostname, username, pam_strerror(pamh, retcode));
78+ failcount, hostname, username, pam_strerror(pamh, retcode));
79+ logbtmp(ttyn + 5, username, hostname);
80 fprintf(stderr,_("Login incorrect\n\n"));
81 pam_set_item(pamh,PAM_USER,NULL);
82 retcode = pam_authenticate(pamh, 0);
eab95ebb 83@@ -564,13 +597,16 @@
67dbd305 84 if (retcode != PAM_SUCCESS) {
85 pam_get_item(pamh, PAM_USER, (const void **) &username);
86
87- if (retcode == PAM_MAXTRIES)
88+ if (retcode == PAM_MAXTRIES) {
89 syslog(LOG_NOTICE,_("TOO MANY LOGIN TRIES (%d) FROM %s FOR "
90 "%s, %s"), failcount, hostname, username,
91 pam_strerror(pamh, retcode));
92- else
93+ logbtmp(ttyn + 5, username, hostname);
94+ } else {
95 syslog(LOG_NOTICE,_("FAILED LOGIN SESSION FROM %s FOR %s, %s"),
96 hostname, username, pam_strerror(pamh, retcode));
97+ logbtmp(ttyn + 5, username, hostname);
98+ }
99
100 fprintf(stderr,_("\nLogin incorrect\n"));
101 pam_end(pamh, retcode);
eab95ebb 102@@ -600,8 +636,12 @@
67dbd305 103 retcode = pam_open_session(pamh, 0);
104 PAM_FAIL_CHECK;
105
106+ openlog("login", LOG_ODELAY, LOG_AUTHPRIV);
107+
108 #else /* ! USE_PAM */
109
110+ openlog("login", LOG_ODELAY, LOG_AUTHPRIV);
111+
112 for (cnt = 0;; ask = 1) {
113 # ifndef __linux__
114 ioctlval = 0;
eab95ebb 115@@ -880,7 +920,9 @@
baf031b2
AF
116 /* If we can't find a pre-existing entry by pid, try by line.
117 BSD network daemons may rely on this. (anonymous) */
118 if (utp == NULL) {
119- setutent();
120+ endutent();
67dbd305 121+ setutent();
122+ memset(&ut, 0, sizeof(ut));
baf031b2
AF
123 ut.ut_type = LOGIN_PROCESS;
124 strncpy(ut.ut_id, ttyn + 8, sizeof(ut.ut_id));
125 strncpy(ut.ut_line, ttyn + 5, sizeof(ut.ut_line));
eab95ebb 126@@ -1127,6 +1169,8 @@
67dbd305 127 #endif
128 signal(SIGINT, SIG_DFL);
129
130+ openlog("login", LOG_ODELAY, LOG_AUTHPRIV);
131+
132 /* discard permissions last so can't get killed and drop core */
133 if(setuid(pwd->pw_uid) < 0 && pwd->pw_uid) {
134 syslog(LOG_ALERT, _("setuid() failed"));
This page took 0.601688 seconds and 4 git commands to generate.