Skip to content

Commit 67ec093

Browse files
rouaultgithub-actions[bot]
authored andcommitted
mapfile.c: fix very likely memory leaks in error code paths after call to msGrowXXXX() functions
1 parent f071dca commit 67ec093

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

mapfile.c

+14-2
Original file line numberDiff line numberDiff line change
@@ -3098,6 +3098,9 @@ int msMaybeAllocateClassStyle(classObj* c, int idx)
30983098
if ( initStyle(c->styles[c->numstyles]) == MS_FAILURE ) {
30993099
msSetError(MS_MISCERR, "Failed to init new styleObj",
31003100
"msMaybeAllocateClassStyle()");
3101+
freeStyle(c->styles[c->numstyles]);
3102+
free(c->styles[c->numstyles]);
3103+
c->styles[c->numstyles] = NULL;
31013104
return(MS_FAILURE);
31023105
}
31033106
c->numstyles++;
@@ -4101,7 +4104,13 @@ int loadLayer(layerObj *layer, mapObj *map)
41014104
if (msGrowLayerClasses(layer) == NULL)
41024105
return(-1);
41034106
initClass(layer->class[layer->numclasses]);
4104-
if(loadClass(layer->class[layer->numclasses], layer) == -1) return(-1);
4107+
if(loadClass(layer->class[layer->numclasses], layer) == -1)
4108+
{
4109+
freeClass(layer->class[layer->numclasses]);
4110+
free(layer->class[layer->numclasses]);
4111+
layer->class[layer->numclasses] = NULL;
4112+
return(-1);
4113+
}
41054114
layer->numclasses++;
41064115
break;
41074116
case(CLUSTER):
@@ -4454,7 +4463,10 @@ int loadLayer(layerObj *layer, mapObj *map)
44544463
if (msGrowLayerScaletokens(layer) == NULL)
44554464
return(-1);
44564465
initScaleToken(&layer->scaletokens[layer->numscaletokens]);
4457-
if(loadScaletoken(&layer->scaletokens[layer->numscaletokens], layer) == -1) return(-1);
4466+
if(loadScaletoken(&layer->scaletokens[layer->numscaletokens], layer) == -1) {
4467+
freeScaleToken(&layer->scaletokens[layer->numscaletokens]);
4468+
return(-1);
4469+
}
44584470
layer->numscaletokens++;
44594471
break;
44604472
case(SIZEUNITS):

0 commit comments

Comments
 (0)