summaryrefslogtreecommitdiffstats
path: root/sys/kern/imgact_shell.c
Commit message (Collapse)AuthorAgeFilesLines
* Decontextualize the couplet VOP_GETATTR / VOP_SETATTR as the passed threadattilio2008-08-281-1/+1
| | | | | | was always curthread and totally unuseful. Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com>
* When calculating arguments to the interpreter for the shebang scriptkib2008-08-261-5/+22
| | | | | | | | executed by fexecve(2), imgp->args->fname is NULL. Moreover, there is no way to recover the path to the script being executed. Do what some other U*ixes do unconditionally, namely supply /dev/fd/n as the script path when called from fexecve(). Document requirement of having fdescfs mounted as caveat.
* Fix a panic which could occur parsing #!-lines in a shell-script. If thegad2005-06-191-3/+3
| | | | | | | | | #!-line had multiple whitespace characters after the interpreter name, and it did not have any options, then the code would do nasty things trying to process a (non-existent) option-string which "ended before it began"... Submitted by: Morten Johansen Approved by: re (dwhite)
* Remove the previous parsing-logic for arguments on the '#!'-line of shellgad2005-06-091-128/+2
| | | | | scripts. As far as I know, no one has needed the '#!#<' kludge to get at the behavior implemented by the historical parsing.
* Change the way options are parsed on the `#!'-line of a shell-script. Insteadgad2005-05-281-7/+174
| | | | | | | | | | | | | | of having the kernel parse that line and add an entry to the argument list for each 'separate word' it finds, have it add only one entry which holds all the words found on that line. The old behavior is useful in some situations, but it does not match the way any other operating system will parse that line. This has been discussed in the thread "Bug in #! processing - One More Time" on the freebsd-arch mailing list (starting back on Feb 24, 2005). The first few messages in that thread provide the background in much detail. PR: 16393 Reviewed by: freebsd-arch
* o Replace two while {} do loops with more appropriate do {} while loops. Thissobomax2005-02-251-12/+27
| | | | | | | | | | | | | | | | | | | | doesn't change functionality, but makes code more logical. Obtained from: DrafonFlyBSD o Use VOP_GETATTR() to obtain actual size of file and parse no more than that. Previously, we parsed MAXSHELLCMDLEN characters regardless of the actual file size. This makes the following working: $ printf '#!/bin/echo' > /tmp/test.sh $ chmod 755 /tmp/test.sh $ /tmp/test.sh Previously, attempts to execve() that shell script has been failing with bogus ENAMETOOLONG. PR: kern/64196 Submitted by: Magnus B.ckstr.m <b@etek.chalmers.se>
* Try harder to not exceed MAXSHELLCMDLEN when parsing first line of shellsobomax2005-02-251-7/+9
| | | | | | | | | | script. Otherwise it's possible to panic kernel by constructing a shell script with first line not ending in '\n'. Also, treat '\0' as line terminating character, which may me useful in some situations. Submitted by: gad
* Fix build on AMD64 (and probably other arches where size_t != int).sobomax2005-01-301-1/+2
| | | | | Submitted by: Tinderbox MFC after: 2 weeks
* o Split out kernel part of execve(2) syscall into two parts: one thatsobomax2005-01-291-46/+92
| | | | | | | | | | | copies arguments into the kernel space and one that operates completely in the kernel space; o use kernel-only version of execve(2) to kill another stackgap in linuxlator/i386. Obtained from: DragonFlyBSD (partially) MFC after: 2 weeks
* /* -> /*- for copyright notices, minor format tweaks as necessaryimp2005-01-061-1/+1
|
* Don't treat # as a comment in interpreter specification line.pjd2004-10-311-1/+1
| | | | | | | | This is magic and no other operating system do so (i.e. Solaris, Tru64, Linux, AIX, HP-UX, Irix, MacOS X, NetBSD). Discussed on: current@ Reported by: S³awek ¯ak <zaks@prioris.mini.pw.edu.pl>
* Use __FBSDID().obrien2003-06-111-2/+3
|
* Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup,schweikh2003-01-011-1/+1
| | | | especially in troff files.
* Remove reference to struct execve_args from struct imgact, whichrwatson2002-11-051-1/+1
| | | | | | | | | | | | | | | | | describes an image activation instance. Instead, make use of the existing fname structure entry, and introduce two new entries, userspace_argv, and userspace_envv. With the addition of mac_execve(), this divorces the image structure from the specifics of the execve() system call, removes a redundant pointer, etc. No semantic change from current behavior, but it means that the structure doesn't depend on syscalls.master-generated includes. There seems to be some redundant initialization of imgact entries, which I have maintained, but which could probably use some cleaning up at some point. Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
* Return a more meaningful errno when the length of the interpreterjwd2001-11-281-1/+1
| | | | | | | | | | | | | exceeds MAXSHELLCMDLEN to avoid secondary /bin/sh execution. Update execve man page to reflect change. Increase MAXSHELLCMDLEN to a slightly more meaningful value. PR: kern/32106 Submitted by: b@etek.chalmers.se Reviewed by: bsd MFC after: 2 weeks
* Fix #! script exec under linux emulation. If a script is exec'd from adillon2000-04-261-5/+1
| | | | | | | | | | program running under linux emulation, the script binary is checked for in /compat/linux first. Without this patch the wrong script binary (i.e. the FreeBSD binary) will be run instead of the linux binary. For example, #!/bin/sh, thus breaking out of linux compatibility mode. This solves a number of problems people have had installing linux software on FreeBSD boxes.
* Allow comments in interpreter specification lines as incracauer2000-02-151-1/+1
| | | | | | | | | | | | | #! /bin/sh # -*- perl -*- This is simply "delete everything after the next '#', not counting the first char in the line". No effort has been made to allow quoting, backslash escaping or '#' in interpreter names. The complies to POSIX 1003.2 in that Posix says the implementation is free to choose whatever it likes. PR: bin/16393
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Fix a couple of warnings and some bitrot in comments.peter1999-05-091-3/+1
|
* *_execsw static structures cannot be const due to the way they interactdillon1999-01-291-2/+2
| | | | | | with EXEC_SET, DECLARE_MODULE, and module_register. Specifically, module_register. We may eventually be able to make these const, but not now.
* *gulp*. Jordan specifically OK'ed this..peter1998-10-161-2/+3
| | | | | | | | This is the bulk of the support for doing kld modules. Two linker_sets were replaced by SYSINIT()'s. VFS's and exec handlers are self registered. kld is now a superset of lkm. I have converted most of them, they will follow as a seperate commit as samples. This all still works as a static a.out kernel using LKM's.
* Removed unused #includes.bde1997-08-021-4/+1
|
* Don't clobber user space argv0 memory on shell exec, mainly for vfork()ache1997-04-231-3/+2
| | | | | | Fix another bug: if argv[0] is NULL, garbadge args might be added for shell script Submitted by: Tor Egge <Tor.Egge@idi.ntnu.no> (with yet one fault detect from me)
* Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are notpeter1997-02-221-1/+1
| | | | ready for it yet.
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-141-1/+1
| | | | | | | | This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
* Fixed the easy cases of const poisoning in the kernel. Cosmetic.bde1996-08-311-2/+2
|
* Killed sections 3 and 4 of my copyright as I don't agree with it (I believedg1996-04-081-6/+1
| | | | | it to be unnecessarily restrictive). For tty_subr.c, update to my standard copyright.
* Staticized.bde1995-12-021-2/+4
| | | | Added prototypes.
* All:dg1995-11-061-15/+15
| | | | | | | | | | | | Changed vnodep -> vp for consistency with the rest of the kernel, and changed iparams -> imgp for brevity. kern_exec.c: Explicitly initialized some additional parts of the image_params struct to avoid bzeroing it. Rewrote the set-id code to reduce the number of logical tests. The rewrite exposed a mostly benign bug in the algorithm: traced set-id images would get ktracing disabled even if the set-id didn't happen for other reasons.
* Remove prototype definitions from <sys/systm.h>.swallace1995-10-081-1/+2
| | | | | | | | | | | | | | Prototypes are located in <sys/sysproto.h>. Add appropriate #include <sys/sysproto.h> to files that needed protos from systm.h. Add structure definitions to appropriate files that relied on sys/systm.h, right before system call definition, as in the rest of the kernel source. In kern_prot.c, instead of using the dummy structure "args", create individual dummy structures named <syscall>_args. This makes life easier for prototype generation.
* Fix my copyright.dg1995-09-081-2/+2
|
* While in the real world, I had a bad case of being swapped out for a lot ofphk1994-09-251-3/+1
| | | | | | | | cycles. While waiting there I added a lot of the extra ()'s I have, (I have never used LISP to any extent). So I compiled the kernel with -Wall and shut up a lot of "suggest you add ()'s", removed a bunch of unused var's and added a couple of declarations here and there. Having a lap-top is highly recommended. My kernel still runs, yell at me if you kernel breaks.
* Fix up some sloppy coding practices:wollman1994-08-181-2/+2
| | | | | | | | | | | | - Delete redundant declarations. - Add -Wredundant-declarations to Makefile.i386 so they don't come back. - Delete sloppy COMMON-style declarations of uninitialized data in header files. - Add a few prototypes. - Clean up warnings resulting from the above. NB: ioconf.c will still generate a redundant-declaration warning, which is unavoidable unless somebody volunteers to make `config' smarter.
* Change all #includes to follow the current Berkeley style. Some of thesewollman1994-08-131-7/+7
| | | | | | | | | | | | | | | | | | | | | ``changes'' are actually not changes at all, but CVS sometimes has trouble telling the difference. This also includes support for second-directory compiles. This is not quite complete yet, as `config' doesn't yet do the right thing. You can still make it work trivially, however, by doing the following: rm /sys/compile mkdir /usr/obj/sys/compile ln -s M-. /sys/compile cd /sys/i386/conf config MYKERNEL cd ../../compile/MYKERNEL ln -s /sys @ rm machine ln -s @/i386/include machine make depend make
* The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch.rgrimes1994-05-251-0/+1
| | | | | Reviewed by: Rodney W. Grimes Submitted by: John Dyson and David Greenman
* Let the linker keep track of pseudo-devices needing initialization andwollman1993-12-201-1/+16
| | | | image activators, rather than listing them inline in the code.
* Rename aout_imgact.c and shell_imgact.c to imgact_* for consistency.wollman1993-12-201-0/+129
OpenPOWER on IntegriCloud