]> git.pld-linux.org Git - packages/util-linux.git/blob - util-linux-login.patch
- updated to 2.10l
[packages/util-linux.git] / util-linux-login.patch
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
3 @@ -105,7 +105,7 @@
4  #define SECURETTY              "/etc/securetty"
5  #define _PATH_UTMP             "/var/run/utmpx"
6  #define _PATH_WTMP             LOGDIR "/wtmpx"
7 -#define _PATH_WTMPLOCK         "/var/log/wtmpxlock"
8 +#define _PATH_WTMPLOCK         "/var/lock/wtmpxlock"
9  
10  /* no more . in DEFPATH */
11  #define        _PATH_DEFPATH           "/usr/local/bin:/bin:/usr/bin"
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
14 @@ -154,7 +154,7 @@
15  
16  #define SLEEP_EXIT_TIMEOUT 5
17  
18 -#ifdef __linux__
19 +#ifndef __linux__
20  #define DO_PS_FIDDLING
21  #endif
22  
23 @@ -300,6 +300,40 @@
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 */
61  
62  int
63  main(int argc, char **argv)
64 @@ -485,8 +519,6 @@
65      else
66         tty = ttyn;
67  
68 -    openlog("login", LOG_ODELAY, LOG_AUTHPRIV);
69 -
70  #if 0
71      /* other than iso-8859-1 */
72      printf("\033(K");
73 @@ -555,7 +587,8 @@
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);
83 @@ -564,13 +597,16 @@
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);
102 @@ -600,8 +636,12 @@
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;
115 @@ -880,7 +920,9 @@
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(); 
121 +           setutent();
122 +           memset(&ut, 0, sizeof(ut));
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));
126 @@ -1127,6 +1169,8 @@
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.035182 seconds and 4 git commands to generate.