From 7cb60913594ec111878bc8d207d7fd098be5635a Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 8 Jul 2021 14:25:41 +0200 Subject: [PATCH] msDrawTextIM(): fix leak in error code path (CID 1503248) --- mapimagemap.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mapimagemap.c b/mapimagemap.c index dfef5e92d..0d378d6f6 100644 --- a/mapimagemap.c +++ b/mapimagemap.c @@ -632,17 +632,19 @@ int msDrawTextIM(mapObj *map, imageObj* img, pointObj labelPnt, char *string, la int msSaveImageIM(imageObj* img, const char *filename, outputFormatObj *format ) { + FILE *stream_to_free = NULL; FILE *stream; char workbuffer[5000]; DEBUG_IF printf("msSaveImageIM\n
"); if(filename != NULL && strlen(filename) > 0) { - stream = fopen(filename, "wb"); - if(!stream) { + stream_to_free = fopen(filename, "wb"); + if(!stream_to_free) { msSetError(MS_IOERR, "(%s)", "msSaveImage()", filename); return(MS_FAILURE); } + stream = stream_to_free; } else { /* use stdout */ #ifdef _WIN32 @@ -696,10 +698,11 @@ int msSaveImageIM(imageObj* img, const char *filename, outputFormatObj *format ) } else { msSetError(MS_MISCERR, "Unknown output image type driver: %s.", "msSaveImage()", format->driver ); + if(stream_to_free != NULL) fclose(stream_to_free); return(MS_FAILURE); } - if(filename != NULL && strlen(filename) > 0) fclose(stream); + if(stream_to_free != NULL) fclose(stream_to_free); return(MS_SUCCESS); }