Date: Sun, 19 Mar 1995 18:20:01 -0800 From: "Gil Kloepfer Jr." <gil@limbic.ssdl.com> To: freebsd-bugs Subject: bin/257: wtmp not properly updated in uucpd Message-ID: <199503200220.SAA07656@freefall.cdrom.com> In-Reply-To: Your message of Sun, 19 Mar 1995 20:18:20 -0600 <199503200218.UAA00511@limbic.ssdl.com>
index | next in thread | previous in thread | raw e-mail
>Number: 257
>Category: bin
>Synopsis: uucpd does not properly update wtmp on logout
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs (FreeBSD bugs mailing list)
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Mar 19 18:20:00 1995
>Originator: Gil Kloepfer Jr.
>Organization:
>Release: FreeBSD current-950319 i386
>Environment:
uucpd on FreeBSD 2.1-development (current)
>Description:
0. uucpd on FreeBSD 2.0R does not function properly at all (which is OK
since 2.1-current mostly works)
on 2.1-development (current)
1. uucpd does not update the wtmp entry upon logout
2. There is some code to update the utmp file, but it is not executing.
This brings up a question as to whether or not it should (discussion below)
>How-To-Repeat:
Will happen any time a remote system executes uucico via uucpd (UUCP over
TCP/IP).
>Fix:
for #2- I thought about this, and came to the conclusion that although it
was convenient, uucpd should not create a login entry in utmp. The reason
for this is that no other daemon (such as ftpd) does this, and there is
really no reason to make uucpd a special case. The other reason is that
the way uucpd was implemented to do this prior to 2.0-RELEASE had the
capability of expanding the size of the utmp file each time a different
ut_line was used (which, in the case of uucpd, was every time).
For #1:
The following is a context diff run against the uucpd.c in
FreeBSD 2.1-development as of last nights snapshot:
(note this also removes the code that does not effectively
do anything to utmp)
*** /current/libexec/uucpd/uucpd.c Thu Nov 24 20:27:08 1994
--- uucpd.c Sun Mar 19 16:30:06 1995
***************
*** 71,77 ****
#define SCPYN(a, b) strncpy(a, b, sizeof (a))
- struct utmp utmp;
struct sockaddr_in hisctladdr;
int hisaddrlen = sizeof hisctladdr;
struct sockaddr_in myctladdr;
--- 71,76 ----
***************
*** 85,91 ****
};
extern char **environ;
extern void logwtmp(char *line, char *name, char *host);
- extern void login(struct utmp *ut);
void doit(struct sockaddr_in *sinp);
void dologout(void);
--- 84,89 ----
***************
*** 174,182 ****
alarm(0);
sprintf(Username, "USER=%s", pw->pw_name);
sprintf(Logname, "LOGNAME=%s", pw->pw_name);
! if ((s = fork()) < 0)
syslog(LOG_ERR, "fork: %m");
! else if (s == 0) {
dologin(pw, sinp);
setgid(pw->pw_gid);
initgroups(pw->pw_name, pw->pw_gid);
--- 172,181 ----
alarm(0);
sprintf(Username, "USER=%s", pw->pw_name);
sprintf(Logname, "LOGNAME=%s", pw->pw_name);
! if ((s = fork()) < 0) {
syslog(LOG_ERR, "fork: %m");
! _exit(1);
! } else if (s == 0) {
dologin(pw, sinp);
setgid(pw->pw_gid);
initgroups(pw->pw_name, pw->pw_gid);
***************
*** 184,191 ****
setuid(pw->pw_uid);
execl(pw->pw_shell, "uucico", NULL);
syslog(LOG_ERR, "execl: %m");
}
- _exit(1);
}
int readline(char start[], int num, int passw)
--- 183,190 ----
setuid(pw->pw_uid);
execl(pw->pw_shell, "uucico", NULL);
syslog(LOG_ERR, "execl: %m");
+ _exit(1);
}
}
int readline(char start[], int num, int passw)
***************
*** 259,267 ****
(void) write(f, (char *) &ll, sizeof ll);
(void) close(f);
}
! utmp.ut_time = cur_time;
! SCPYN(utmp.ut_line, line);
! SCPYN(utmp.ut_name, pw->pw_name);
! SCPYN(utmp.ut_host, remotehost);
! login(&utmp);
}
--- 258,262 ----
(void) write(f, (char *) &ll, sizeof ll);
(void) close(f);
}
! logwtmp(line, pw->pw_name, remotehost);
}
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199503200220.SAA07656>
