Date: Sat, 11 Jan 1997 02:34:58 +0100 (CET) From: Philippe Charnier <charnier@xp11.frmug.org> To: FreeBSD-gnats-submit@freebsd.org Subject: bin/2442: setusershell()/endusershell() missing Message-ID: <199701110134.CAA28437@xp11.frmug.org> Resent-Message-ID: <199701110210.SAA18899@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 2442
>Category: bin
>Synopsis: setusershell()/endusershell() missing
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jan 10 18:10:01 PST 1997
>Last-Modified:
>Originator: Philippe Charnier
>Organization:
>Release: FreeBSD 3.0-CURRENT i386
>Environment:
>Description:
The right way (TM) should be:
setusershell()
some getusershell()
endusershell()
>How-To-Repeat:
>Fix:
Index: ftpd.c
===================================================================
RCS file: /home2h/FreeBSD.cvsroot/src/libexec/ftpd/ftpd.c,v
retrieving revision 1.27
diff -u -r1.27 ftpd.c
--- ftpd.c 1996/11/30 12:00:25 1.27
+++ ftpd.c 1997/01/11 01:14:39
@@ -617,6 +617,7 @@
if ((pw = sgetpwnam(name))) {
if ((shell = pw->pw_shell) == NULL || *shell == 0)
shell = _PATH_BSHELL;
+ setusershell();
while ((cp = getusershell()) != NULL)
if (strcmp(cp, shell) == 0)
break;
Index: user.c
===================================================================
RCS file: /home2h/FreeBSD.cvsroot/src/release/sysinstall/user.c,v
retrieving revision 1.7
diff -u -r1.7 user.c
--- user.c 1997/01/03 06:41:41 1.7
+++ user.c 1997/01/11 01:15:29
@@ -423,6 +423,7 @@
}
}
if (strlen(shell) > 0) {
+ setusershell();
while((cp = getusershell()) != NULL)
if (strcmp(cp, shell) == 0)
break;
Index: util.c
===================================================================
RCS file: /home2h/FreeBSD.cvsroot/src/usr.bin/chpass/util.c,v
retrieving revision 1.5
diff -u -r1.5 util.c
--- util.c 1996/08/12 14:45:26 1.5
+++ util.c 1997/01/11 01:16:20
@@ -137,10 +137,11 @@
setusershell();
while (sh = getusershell()) {
if (!strcmp(name, sh))
- return (name);
+ { endusershell(); return (name); }
/* allow just shell name, but use "real" path */
if ((p = strrchr(sh, '/')) && strcmp(name, p + 1) == 0)
- return (sh);
+ { endusershell(); return (sh); }
}
+ endusershell();
return (NULL);
}
Index: su.c
===================================================================
RCS file: /home2h/FreeBSD.cvsroot/src/usr.bin/su/su.c,v
retrieving revision 1.14
diff -u -r1.14 su.c
--- su.c 1996/10/07 10:00:58 1.14
+++ su.c 1997/01/11 01:18:41
@@ -330,9 +330,14 @@
{
char *cp;
+ setusershell();
while ((cp = getusershell()) != NULL)
- if (strcmp(cp, sh) == 0)
+ if (strcmp(cp, sh) == 0) {
+ endusershell();
return (1);
+ }
+
+ endusershell();
return (0);
}
Index: pw_scan.c
===================================================================
RCS file: /home2h/FreeBSD.cvsroot/src/usr.sbin/pwd_mkdb/pw_scan.c,v
retrieving revision 1.5
diff -u -r1.5 pw_scan.c
--- pw_scan.c 1996/06/20 19:19:29 1.5
+++ pw_scan.c 1997/01/11 01:20:00
@@ -123,7 +123,8 @@
p = pw->pw_shell;
if (root && *p) /* empty == /bin/sh */
- for (setusershell();;) {
+ setusershell();
+ for (;;) {
if (!(sh = getusershell())) {
warnx("warning, unknown root shell");
break;
@@ -131,6 +132,7 @@
if (!strcmp(p, sh))
break;
}
+ endusershell();
if(p[0]) pw->pw_fields |= _PWF_SHELL;
if (p = strsep(&bp, ":")) { /* too many */
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701110134.CAA28437>
