Skip to content

Commit f071dca

Browse files
rouaultgithub-actions[bot]
authored andcommitted
loadClass(): better fix for class->styles[] mem-leak
Improved fix of #6651 Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52107
1 parent 7f2d651 commit f071dca

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

mapfile.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2949,11 +2949,6 @@ int freeClass(classObj *class)
29492949
}
29502950
}
29512951
}
2952-
if( class->numstyles == 0 && class->styles != NULL &&
2953-
class->styles[0] != NULL ) {
2954-
/* msGrowClassStyles() creates class->styles[0] during the first call */
2955-
msFree(class->styles[0]);
2956-
}
29572952
msFree(class->styles);
29582953

29592954
for(i=0; i<class->numlabels; i++) { /* each label */
@@ -3276,7 +3271,12 @@ int loadClass(classObj *class, layerObj *layer)
32763271
if(msGrowClassStyles(class) == NULL)
32773272
return(-1);
32783273
initStyle(class->styles[class->numstyles]);
3279-
if(loadStyle(class->styles[class->numstyles]) != MS_SUCCESS) return(-1);
3274+
if(loadStyle(class->styles[class->numstyles]) != MS_SUCCESS) {
3275+
freeStyle(class->styles[class->numstyles]);
3276+
free(class->styles[class->numstyles]);
3277+
class->styles[class->numstyles] = NULL;
3278+
return(-1);
3279+
}
32803280
class->numstyles++;
32813281
break;
32823282
case(TEMPLATE):

0 commit comments

Comments
 (0)