sh: Avoid out-of-bounds access in setoptionbyindex() for 'set -o nolog'.

Reported by:	hrs
This commit is contained in:
Jilles Tjoelker 2016-03-09 21:00:57 +00:00
parent 2472c543df
commit c94a041f43

View File

@ -285,7 +285,7 @@ minus_o(char *name, int val)
static void
setoptionbyindex(int idx, int val)
{
if (optletter[idx] == 'p' && !val && privileged) {
if (&optval[idx] == &privileged && !val && privileged) {
if (setgid(getgid()) == -1)
error("setgid");
if (setuid(getuid()) == -1)
@ -294,9 +294,9 @@ setoptionbyindex(int idx, int val)
optval[idx] = val;
if (val) {
/* #%$ hack for ksh semantics */
if (optletter[idx] == 'V')
if (&optval[idx] == &Vflag)
Eflag = 0;
else if (optletter[idx] == 'E')
else if (&optval[idx] == &Eflag)
Vflag = 0;
}
}