Image: Fix crash on loading corrupted JPEG file

This commit is contained in:
Stenzek 2025-01-14 13:29:14 +10:00
parent da1590ed5f
commit 88e18a8659
No known key found for this signature in database

View File

@ -958,10 +958,11 @@ struct JPEGErrorHandler
Error* errptr;
fastjmp_buf jbuf;
JPEGErrorHandler()
JPEGErrorHandler(Error* errptr_)
{
jpeg_std_error(&err);
err.error_exit = &ErrorExit;
errptr = errptr_;
}
static void ErrorExit(j_common_ptr cinfo)
@ -983,7 +984,7 @@ static bool WrapJPEGDecompress(Image* image, Error* error, T setup_func)
// NOTE: Be **very** careful not to allocate memory after calling this function.
// It won't get freed, because fastjmp does not unwind the stack.
JPEGErrorHandler errhandler;
JPEGErrorHandler errhandler(error);
if (fastjmp_set(&errhandler.jbuf) != 0)
{
jpeg_destroy_decompress(&info);
@ -1128,7 +1129,7 @@ static bool WrapJPEGCompress(const Image& image, u8 quality, Error* error, T set
// NOTE: Be **very** careful not to allocate memory after calling this function.
// It won't get freed, because fastjmp does not unwind the stack.
JPEGErrorHandler errhandler;
JPEGErrorHandler errhandler(error);
if (fastjmp_set(&errhandler.jbuf) != 0)
{
jpeg_destroy_compress(&info);