Image: Fix crash on loading corrupted JPEG file

pull/3355/head
Stenzek 2 months ago
parent da1590ed5f
commit 88e18a8659
No known key found for this signature in database

@ -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);

Loading…
Cancel
Save