Fix a few goofs in sys_sysctl()
* system.c (sys_sysctl): Cast pointer to long, not size_t, when we intend to use it as an address. Set oldlen to 0 prior to reading into it - we want to have deterministic result if read fails. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
048cc42f08
commit
8560ef291c
5
system.c
5
system.c
@ -951,8 +951,8 @@ sys_sysctl(struct tcb *tcp)
|
||||
tprints(", ...");
|
||||
tprintf("}, %d, ", info.nlen);
|
||||
} else {
|
||||
size_t oldlen;
|
||||
if (umove(tcp, (size_t)info.oldlenp, &oldlen) >= 0
|
||||
size_t oldlen = 0;
|
||||
if (umove(tcp, (long)info.oldlenp, &oldlen) >= 0
|
||||
&& info.nlen >= 2
|
||||
&& ((name[0] == CTL_KERN
|
||||
&& (name[1] == KERN_OSRELEASE
|
||||
@ -978,7 +978,6 @@ sys_sysctl(struct tcb *tcp)
|
||||
info.oldval, (unsigned long)oldlen,
|
||||
info.newval, (unsigned long)info.newlen);
|
||||
}
|
||||
tprints("}");
|
||||
}
|
||||
|
||||
free(name);
|
||||
|
Loading…
x
Reference in New Issue
Block a user