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