[syslinux] [PATCH 0/2] Stack overflows when running commands
Gene Cumm
gene.cumm at gmail.com
Thu Jan 21 03:04:13 PST 2016
On Sat, Jan 9, 2016 at 12:49 PM, Celelibi <celelibi at gmail.com> wrote:
> 2016-01-09 17:05 UTC+01:00, Gene Cumm <gene.cumm at gmail.com>:
>> On Tue, Oct 13, 2015 at 12:04 AM, celelibi--- via Syslinux
>> <syslinux at zytor.com> wrote:
>>> From: Sylvain Gault <sylvain.gault at gmail.com>
>>>
>>> Hello there,
>>>
>>> I propose 2 patches that fix two possible stack overflows either when
>>> running a
>>> COM32 module or when loading a new config file.
>>>
>>> I didn't find a better way to do this than to use the infamous
>>> setjmp/longjmp
>>> functions to restore the stack to a previous state. This makes the logic a
>>> bit
>>> more complex, but the behavior is not changed.
>>
>> The other way to do this is set variable(s) about the next target
>> state and then return from the functions. I'm not sure which is the
>> better way, however.
>
> That would change the semantics of the execute() function which is
> supposed to never return. So all the modules using that function
> directly or indirectly would need to be patched.
>
> Are there some people who wrote their own modules? If so, Ady would
> yell at us as a backward compatibility guardian. ^^
>
> But I agree that would allow the modules to clean up after themselves:
> Freeing memory and closing files. But maybe a generic resource
> tracking is better anyway.
>
>>
>>> Although these bugs are not very visible right now because of some
>>> useless
>>> section in the binaries taking some space allowing the stack to overflow
>>> without consequences, they might need to be fixed very soon.
>>>
>>> Still remain a limitation when running a lot of commands (or loading lots
>>> of
>>> time some config file) is that some files might not be closed and some
>>> memory
>>> may not be freed.
>>>
>>> Sylvain Gault (2):
>>> ldlinux: fix stack overflow when running COM32 modules
>>> core: Fix stack overflow when reloading config
>>>
>>> com32/elflink/ldlinux/execute.c | 4 ++-
>>> com32/elflink/ldlinux/ldlinux.c | 28 ++++++++++++++------
>>> core/elflink/load_env32.c | 58
>>> ++++++++++++++++++++++++++++++++++++++++-
>>> 3 files changed, 80 insertions(+), 10 deletions(-)
Merged.
--
-Gene
More information about the Syslinux
mailing list