Weird things in csh (and kernel?) -- certainly!
    Maarten Litmaath 
    maart at cs.vu.nl
       
    Sat Mar  5 14:24:49 AEST 1988
    
    
  
In article <716 at yabbie.rmit.oz> rcodi at yabbie.rmit.oz (Ian Donaldson) writes:
\In article <1193 at ark.cs.vu.nl>, maart at cs.vu.nl (Maarten Litmaath) writes:
\> 	% a.out < a.out
\> 	a.out: Text file busy.
\
\You didn't say which system.
4.1BSD!
\Yep, its a kernel bug in some pre 4.[23]bsd systems.  Exec processing
\only checks for open files rather than files open for writing when
\determining if the file is busy.
\
\Its also a -big- security bug in such systems that leave most system binaries
\publicly readable.  The workaround is to -not- make such binaries publicly
\readable.  Simple.
You're completely right.
\...
\> 	% ./echo > echo
\
\	First clobbers "./echo" then csh tries to execute it with stdout
\	sent to it.  execv() fails because the kernel sees an empty file, 
\	so csh tries to execute it as a script.
\
\	Since a new csh is started up to execute it, it reads your ".cshrc"
\	and executes that first.
Normally a Bourne shell is started up (default for shell scripts), but
- as Ronald Khoo mentioned in a reply I got - if the file size is zero,
csh appears to execute the shell mentioned in the internal variable
"shell":
	% : > gnome
	% chmod 755 gnome
	% set shell=hobgoblin
	% gnome
	hobgoblin: No such file or directory
	% echo '' > gnome
	% ls -l gnome
	-rwxr-xr-x 1 3754          1 Mar  5 15:23 gnome
	% gnome
	%
\	A great puzzle!
Thanks! :-)
-- 
Which of Santa Claus and God          |Maarten Litmaath @ Free U Amsterdam:
             is more likely to exist? |maart at cs.vu.nl, mcvax!botter!ark!maart
    
    
More information about the Comp.unix.wizards
mailing list