Hi!
In PeachOS Master, there is a possible memory leak in process_load_for_slot.
Say we get an error on line 500:
`res = process_load_data(filename, _process);
if (res < 0)
{
goto out;
}
program_stack_ptr = kzalloc(PEACHOS_USER_PROGRAM_STACK_SIZE);
if (!program_stack_ptr) //line 500
{
res = -ENOMEM;
goto out;
}`
then process data needs to be freed. But this doesn't happen. As it stands, the out label acknowledges the need to free the data but doesn't do so:
`out:
if (ISERR(res))
{
if (_process && _process->task)
{
task_free(_process->task);
}
// Free the process data
}`
A better implementation could be:
`if (ISERR(res))
{
if (_process && _process->task)
{
task_free(_process->task);
}
// Free the process data
process_free_program_data(_process);
}`
Hi! In PeachOS Master, there is a possible memory leak in process_load_for_slot. Say we get an error on line 500: `res = process_load_data(filename, _process); if (res < 0) { goto out; }
then process data needs to be freed. But this doesn't happen. As it stands, the out label acknowledges the need to free the data but doesn't do so: `out: if (ISERR(res)) { if (_process && _process->task) { task_free(_process->task); }
A better implementation could be: `if (ISERR(res)) { if (_process && _process->task) { task_free(_process->task); }