sh: Avoid out-of-bounds access in setoptionbyindex() for 'set -o nolog'.
Reported by: hrs
This commit is contained in:
parent
2472c543df
commit
c94a041f43
@ -285,7 +285,7 @@ minus_o(char *name, int val)
|
|||||||
static void
|
static void
|
||||||
setoptionbyindex(int idx, int val)
|
setoptionbyindex(int idx, int val)
|
||||||
{
|
{
|
||||||
if (optletter[idx] == 'p' && !val && privileged) {
|
if (&optval[idx] == &privileged && !val && privileged) {
|
||||||
if (setgid(getgid()) == -1)
|
if (setgid(getgid()) == -1)
|
||||||
error("setgid");
|
error("setgid");
|
||||||
if (setuid(getuid()) == -1)
|
if (setuid(getuid()) == -1)
|
||||||
@ -294,9 +294,9 @@ setoptionbyindex(int idx, int val)
|
|||||||
optval[idx] = val;
|
optval[idx] = val;
|
||||||
if (val) {
|
if (val) {
|
||||||
/* #%$ hack for ksh semantics */
|
/* #%$ hack for ksh semantics */
|
||||||
if (optletter[idx] == 'V')
|
if (&optval[idx] == &Vflag)
|
||||||
Eflag = 0;
|
Eflag = 0;
|
||||||
else if (optletter[idx] == 'E')
|
else if (&optval[idx] == &Eflag)
|
||||||
Vflag = 0;
|
Vflag = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user