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().
This commit is contained in:
parent
1539c13507
commit
a013f6e020
@ -1343,11 +1343,19 @@ proc_t* readtask(PROCTAB *restrict const PT, const proc_t *restrict const p, pro
|
|||||||
#ifdef QUICK_THREADS
|
#ifdef QUICK_THREADS
|
||||||
MK_THREAD(t);
|
MK_THREAD(t);
|
||||||
#else
|
#else
|
||||||
t->environ = NULL;
|
t->environ = NULL;
|
||||||
t->cmdline = vectorize_this_str("n/a");
|
t->cmdline = vectorize_this_str("n/a");
|
||||||
t->cgroup = NULL;
|
t->cgroup = NULL;
|
||||||
t->supgid = NULL;
|
t->cgname = NULL;
|
||||||
t->supgrp = NULL;
|
t->supgid = NULL;
|
||||||
|
t->supgrp = NULL;
|
||||||
|
t->sd_mach = NULL;
|
||||||
|
t->sd_ouid = NULL;
|
||||||
|
t->sd_seat = NULL;
|
||||||
|
t->sd_sess = NULL;
|
||||||
|
t->sd_slice = NULL;
|
||||||
|
t->sd_unit = NULL;
|
||||||
|
t->sd_uunit = NULL;
|
||||||
#endif
|
#endif
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user