Skip to content

Commit 7643fb8

Browse files
rouaultgithub-actions[bot]
authored andcommitted
mapfile parser: fix double-free when included file doesn't exist
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=57788
1 parent 9e7578d commit 7643fb8

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

maplexer.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -4782,17 +4782,17 @@ YY_RULE_SETUP
47824782
return(-1);
47834783
}
47844784

4785-
include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; /* save state */
4786-
include_lineno[include_stack_ptr] = msyylineno;
4787-
include_stack_ptr++;
4788-
47894785
msyyin = fopen(msBuildPath(path, msyybasepath, msyytext), "r");
47904786
if(!msyyin) {
47914787
msSetError(MS_IOERR, "Error opening included file \"%s\".", "msyylex()", msyytext);
47924788
msyyin = YY_CURRENT_BUFFER->yy_input_file;
47934789
return(-1);
47944790
}
47954791

4792+
include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; /* save state */
4793+
include_lineno[include_stack_ptr] = msyylineno;
4794+
include_stack_ptr++;
4795+
47964796
msyy_switch_to_buffer( msyy_create_buffer(msyyin, YY_BUF_SIZE) );
47974797
msyylineno = 1;
47984798

maplexer.l

+4-4
Original file line numberDiff line numberDiff line change
@@ -691,17 +691,17 @@ char path[MS_MAXPATHLEN];
691691
return(-1);
692692
}
693693

694-
include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; /* save state */
695-
include_lineno[include_stack_ptr] = msyylineno;
696-
include_stack_ptr++;
697-
698694
msyyin = fopen(msBuildPath(path, msyybasepath, msyytext), "r");
699695
if(!msyyin) {
700696
msSetError(MS_IOERR, "Error opening included file \"%s\".", "msyylex()", msyytext);
701697
msyyin = YY_CURRENT_BUFFER->yy_input_file;
702698
return(-1);
703699
}
704700

701+
include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; /* save state */
702+
include_lineno[include_stack_ptr] = msyylineno;
703+
include_stack_ptr++;
704+
705705
msyy_switch_to_buffer( msyy_create_buffer(msyyin, YY_BUF_SIZE) );
706706
msyylineno = 1;
707707

0 commit comments

Comments
 (0)