From 22297e7ea2965453810a8a0bed1ef90b7622515f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 17 May 2020 01:41:52 -0400 Subject: [PATCH] 7z: Make error handling a little more robust. --- src/physfs_archiver_7z.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/physfs_archiver_7z.c b/src/physfs_archiver_7z.c index 6b882c4d..501c4f81 100644 --- a/src/physfs_archiver_7z.c +++ b/src/physfs_archiver_7z.c @@ -285,13 +285,16 @@ static PHYSFS_Io *SZIP_openRead(void *opaque, const char *path) &blockIndex, &outBuffer, &outBufferSize, &offset, &outSizeProcessed, alloc, alloc); GOTO_IF(rc != SZ_OK, szipErrorCode(rc), SZIP_openRead_failed); + GOTO_IF(outBuffer == NULL, PHYSFS_ERR_OUT_OF_MEMORY, SZIP_openRead_failed); io->destroy(io); io = NULL; - buf = allocator.Malloc(outSizeProcessed); + buf = allocator.Malloc(outSizeProcessed ? outSizeProcessed : 1); GOTO_IF(buf == NULL, PHYSFS_ERR_OUT_OF_MEMORY, SZIP_openRead_failed); - memcpy(buf, outBuffer + offset, outSizeProcessed); + + if (outSizeProcessed > 0) + memcpy(buf, outBuffer + offset, outSizeProcessed); alloc->Free(alloc, outBuffer); outBuffer = NULL;