Skip to content

Commit

Permalink
mapfile.c: fix very likely memory leaks in error code paths after cal…
Browse files Browse the repository at this point in the history
…l to msGrowXXXX() functions
  • Loading branch information
rouault authored and github-actions[bot] committed Oct 5, 2022
1 parent 53ed7fe commit e915c02
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions mapfile.c
Expand Up @@ -3113,6 +3113,9 @@ int msMaybeAllocateClassStyle(classObj* c, int idx)
if ( initStyle(c->styles[c->numstyles]) == MS_FAILURE ) {
msSetError(MS_MISCERR, "Failed to init new styleObj",
"msMaybeAllocateClassStyle()");
freeStyle(c->styles[c->numstyles]);
free(c->styles[c->numstyles]);
c->styles[c->numstyles] = NULL;
return(MS_FAILURE);
}
c->numstyles++;
Expand Down Expand Up @@ -3975,7 +3978,13 @@ int loadLayer(layerObj *layer, mapObj *map)
if (msGrowLayerClasses(layer) == NULL)
return(-1);
initClass(layer->class[layer->numclasses]);
if(loadClass(layer->class[layer->numclasses], layer) == -1) return(-1);
if(loadClass(layer->class[layer->numclasses], layer) == -1)
{
freeClass(layer->class[layer->numclasses]);
free(layer->class[layer->numclasses]);
layer->class[layer->numclasses] = NULL;
return(-1);
}
layer->numclasses++;
break;
case(CLUSTER):
Expand Down Expand Up @@ -4215,7 +4224,10 @@ int loadLayer(layerObj *layer, mapObj *map)
if (msGrowLayerScaletokens(layer) == NULL)
return(-1);
initScaleToken(&layer->scaletokens[layer->numscaletokens]);
if(loadScaletoken(&layer->scaletokens[layer->numscaletokens], layer) == -1) return(-1);
if(loadScaletoken(&layer->scaletokens[layer->numscaletokens], layer) == -1) {
freeScaleToken(&layer->scaletokens[layer->numscaletokens]);
return(-1);
}
layer->numscaletokens++;
break;
case(SIZEUNITS):
Expand Down

0 comments on commit e915c02

Please sign in to comment.