• Noam Postavsky's avatar
    Avoid memory corruption with specpdl overflow + edebug (Bug#30481) · c352434a
    Noam Postavsky authored
    If grow_specpdl fails due to outgrowing max_specpdl_size, it will
    signal an error *before* growing the specpdl array.  Therefore, when
    handling the signal, specpdl_ptr points past the end of the specpdl
    array and any further use of of specpdl before unwinding (e.g., if
    edebug binds signal-hook-function) will cause memory corruption.
    * src/eval.c (signal_or_quit): Don't call `signal-hook-function' if
    the specpdl_ptr is already past the end of the specpdl array.
    * test/src/eval-tests.el (eval-tests--exceed-specbind-limit)
    (eval-exceed-specbind-with-signal-hook): New test & helper function.
    c352434a
eval.c 121 KB