0082-proc/readproc.c: Fix double-free()s in readtask().
If QUICK_THREADS is not defined (it is not by default, but most distributions enable it) and task_dir_missing is true (only on very old kernels), then readtask() forgets to reset some of the struct proc_t t's members, which later results in double-free()s in free_acquired(). For now, we simply synchronized the list of members to be reset with the list of members freed in free_acquired(). ---------------------------- adapted for newlib branch . now 'cmd' is also dynamic . just synchronized with those freed in free_acquired . QUICK_THREADS is now FALSE_THREADS, serving different purpose . entire patch will be effectively reverted with upcoming refactor Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
990ea89ae9
commit
b9a9fd4c74
@ -1172,15 +1172,16 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
|
|||||||
|
|
||||||
#ifdef FALSE_THREADS
|
#ifdef FALSE_THREADS
|
||||||
} else {
|
} else {
|
||||||
t->cmdline = NULL;
|
|
||||||
t->cmdline_v = NULL;
|
|
||||||
t->environ = NULL;
|
t->environ = NULL;
|
||||||
t->environ_v = NULL;
|
t->cmdline = NULL;
|
||||||
t->cgname = NULL;
|
t->cgname = NULL;
|
||||||
t->cgroup = NULL;
|
t->cgroup = NULL;
|
||||||
|
t->environ_v = NULL;
|
||||||
|
t->cmdline_v = NULL;
|
||||||
t->cgroup_v = NULL;
|
t->cgroup_v = NULL;
|
||||||
t->supgid = NULL;
|
t->supgid = NULL;
|
||||||
t->supgrp = NULL;
|
t->supgrp = NULL;
|
||||||
|
t->cmd = NULL;
|
||||||
t->sd_mach = NULL;
|
t->sd_mach = NULL;
|
||||||
t->sd_ouid = NULL;
|
t->sd_ouid = NULL;
|
||||||
t->sd_seat = NULL;
|
t->sd_seat = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user