Return to BSD News archive
Received: by minnie.vk1xwt.ampr.org with NNTP
id AA10 ; Wed, 27 Jan 93 13:09:37 EST
Xref: sserve comp.bugs.4bsd:1931 comp.unix.bsd:10423
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!howland.reston.ans.net!usc!enterpoop.mit.edu!senator-bedfellow.mit.edu!athena.mit.edu!ckclark
From: ckclark@athena.mit.edu (Calvin Clark)
Newsgroups: comp.bugs.4bsd,comp.unix.bsd
Subject: script(1) requires absolute path, hardcodes argv[0] to "sh"
Date: 26 Jan 1993 06:02:29 GMT
Organization: Massachusetts Institute of Technology
Lines: 56
Distribution: world
Message-ID: <CKCLARK.93Jan26010229@augmented.mit.edu>
Reply-To: ckclark@mit.edu
NNTP-Posting-Host: augmented.mit.edu
Description:
If the SHELL environment variable isn't an explicit path,
script(1) won't find it. Also, it sets argv[0] in the new shell to
`sh', regardless of the name of the shell.
It's not a setuid program and it doesn't have to be so
restrictive.
Repeat-by:
First problem:
$ SHELL=sh; export SHELL
$ script
Script started, file is typescript
sh: No such file or directory
Script done, file is typescript
$
Second problem:
$ ln -s /bin/sh /tmp/foo
$ SHELL=/tmp/foo; export SHELL
$ script
Script started, file is typescript
$ echo $0
sh
Fix:
*** script.c.old Tue Jan 26 00:14:02 1993
--- script.c Tue Jan 26 00:20:05 1993
***************
*** 194,200 ****
(void) dup2(slave, 1);
(void) dup2(slave, 2);
(void) close(slave);
! execl(shell, "sh", "-i", 0);
perror(shell);
fail();
}
--- 194,200 ----
(void) dup2(slave, 1);
(void) dup2(slave, 2);
(void) close(slave);
! execlp(shell, shell, "-i", 0);
perror(shell);
fail();
}
--
Calvin Clark <ckclark@mit.edu> : MIT
For the network challenged: / uunet!mit-eddie!mit-athena!ckclark : Academic
\ ckclark%mit.edu@MITVMA.bitnet : Computing
For the hopeless bureaucrat: Calvin_Clark@MIT.EDU : Services