sh: Do not stat() $MAIL/$MAILPATH in non-interactive shells.
These may be NFS mounted, and we should not touch them unless we are going to do something useful with the information.
This commit is contained in:
parent
243cecf517
commit
5706357661
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=203576
@ -157,6 +157,8 @@ main(int argc, char *argv[])
|
||||
out2fmt_flush("sh: cannot determine working directory\n");
|
||||
if (getpwd() != NULL)
|
||||
setvar ("PWD", getpwd(), VEXPORT);
|
||||
if (iflag)
|
||||
chkmail(1);
|
||||
if (argv[0] && argv[0][0] == '-') {
|
||||
state = 1;
|
||||
read_profile("/etc/profile");
|
||||
|
@ -337,8 +337,13 @@ setvareq(char *s, int flags)
|
||||
/*
|
||||
* We could roll this to a function, to handle it as
|
||||
* a regular variable function callback, but why bother?
|
||||
*
|
||||
* Note: this assumes iflag is not set to 1 initially.
|
||||
* As part of init(), this is called before arguments
|
||||
* are looked at.
|
||||
*/
|
||||
if (vp == &vmpath || (vp == &vmail && ! mpathset()))
|
||||
if ((vp == &vmpath || (vp == &vmail && ! mpathset())) &&
|
||||
iflag == 1)
|
||||
chkmail(1);
|
||||
if ((vp->flags & VEXPORT) && localevar(s)) {
|
||||
change_env(s, 1);
|
||||
|
15
tools/regression/bin/sh/parameters/mail1.0
Normal file
15
tools/regression/bin/sh/parameters/mail1.0
Normal file
@ -0,0 +1,15 @@
|
||||
# $FreeBSD$
|
||||
# Test that a non-interactive shell does not access $MAIL.
|
||||
|
||||
goodfile=/var/empty/sh-test-goodfile
|
||||
mailfile=/var/empty/sh-test-mailfile
|
||||
T=$(mktemp sh-test.XXXXXX) || exit
|
||||
MAIL=$mailfile ktrace -i -f "$T" sh -c "[ -s $goodfile ]" 2>/dev/null
|
||||
if ! grep -q $goodfile "$T"; then
|
||||
# ktrace problem
|
||||
rc=0
|
||||
elif ! grep -q $mailfile "$T"; then
|
||||
rc=0
|
||||
fi
|
||||
rm "$T"
|
||||
exit ${rc:-3}
|
15
tools/regression/bin/sh/parameters/mail2.0
Normal file
15
tools/regression/bin/sh/parameters/mail2.0
Normal file
@ -0,0 +1,15 @@
|
||||
# $FreeBSD$
|
||||
# Test that an interactive shell accesses $MAIL.
|
||||
|
||||
goodfile=/var/empty/sh-test-goodfile
|
||||
mailfile=/var/empty/sh-test-mailfile
|
||||
T=$(mktemp sh-test.XXXXXX) || exit
|
||||
MAIL=$mailfile ktrace -i -f "$T" sh +m -i </dev/null >/dev/null 2>&1
|
||||
if ! grep -q $goodfile "$T"; then
|
||||
# ktrace problem
|
||||
rc=0
|
||||
elif grep -q $mailfile "$T"; then
|
||||
rc=0
|
||||
fi
|
||||
rm "$T"
|
||||
exit ${rc:-3}
|
Loading…
Reference in New Issue
Block a user