mirror of
https://github.com/fltk/fltk.git
synced 2026-05-28 11:25:22 +08:00
Fix crash in Zenity filechooser with badly formed filter (#665)
This commit is contained in:
@@ -208,6 +208,7 @@ char *Fl_Kdialog_Native_File_Chooser_Driver::parse_filter(const char *f) {
|
|||||||
char *lead = new char[r-p];
|
char *lead = new char[r-p];
|
||||||
memcpy(lead, p+1, (r-p)-1); lead[(r-p)-1] = 0;
|
memcpy(lead, p+1, (r-p)-1); lead[(r-p)-1] = 0;
|
||||||
const char *r2 = strchr(r, '}');
|
const char *r2 = strchr(r, '}');
|
||||||
|
if (!r2) return NULL;
|
||||||
char *ends = new char[r2-r];
|
char *ends = new char[r2-r];
|
||||||
memcpy(ends, r+1, (r2-r)-1); ends[(r2-r)-1] = 0;
|
memcpy(ends, r+1, (r2-r)-1); ends[(r2-r)-1] = 0;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
@@ -248,6 +249,7 @@ void Fl_Kdialog_Native_File_Chooser_Driver::filter(const char *f) {
|
|||||||
char *part = strtok_r(f2, "\n", &ptr);
|
char *part = strtok_r(f2, "\n", &ptr);
|
||||||
while (part) {
|
while (part) {
|
||||||
char *p = parse_filter(part);
|
char *p = parse_filter(part);
|
||||||
|
if (!p) break;
|
||||||
_parsedfilt = strapp(_parsedfilt, p);
|
_parsedfilt = strapp(_parsedfilt, p);
|
||||||
_parsedfilt = strapp(_parsedfilt, "\n");
|
_parsedfilt = strapp(_parsedfilt, "\n");
|
||||||
delete[] p;
|
delete[] p;
|
||||||
|
|||||||
Reference in New Issue
Block a user