Fix crash in Zenity filechooser with badly formed filter (#665)

This commit is contained in:
ManoloFLTK 2023-01-31 17:01:30 +01:00
parent f75f05e7b7
commit 8ef592db1e
1 changed files with 7 additions and 6 deletions

View File

@ -208,7 +208,7 @@ char *Fl_Kdialog_Native_File_Chooser_Driver::parse_filter(const char *f) {
char *lead = new char[r-p];
memcpy(lead, p+1, (r-p)-1); lead[(r-p)-1] = 0;
const char *r2 = strchr(r, '}');
if (!r2) return NULL;
if (!r2 || r2 == r + 1) return NULL;
char *ends = new char[r2-r];
memcpy(ends, r+1, (r2-r)-1); ends[(r2-r)-1] = 0;
char *ptr;
@ -249,11 +249,12 @@ void Fl_Kdialog_Native_File_Chooser_Driver::filter(const char *f) {
char *part = strtok_r(f2, "\n", &ptr);
while (part) {
char *p = parse_filter(part);
if (!p) break;
_parsedfilt = strapp(_parsedfilt, p);
_parsedfilt = strapp(_parsedfilt, "\n");
delete[] p;
_nfilters++;
if (p) {
_parsedfilt = strapp(_parsedfilt, p);
_parsedfilt = strapp(_parsedfilt, "\n");
delete[] p;
_nfilters++;
}
part = strtok_r(NULL, "\n", &ptr);
}
free(f2);