xkbcomp: fix crash when parsing an xkb_geometry section
xkb_geometry sections are ignored; previously the had done so by returning NULL for the section's XkbFile, however some sections of the code do not expect this. Instead, create an XkbFile for it, it will never be processes and discarded later. Caught with the afl fuzzer. Signed-off-by: Ran Benita <ran234@gmail.com>master
parent
e3cacae7b1
commit
917636b1d0
|
@ -241,8 +241,13 @@ CompileKeymap(XkbFile *file, struct xkb_keymap *keymap, enum merge_mode merge)
|
|||
file = (XkbFile *) file->common.next) {
|
||||
if (file->file_type < FIRST_KEYMAP_FILE_TYPE ||
|
||||
file->file_type > LAST_KEYMAP_FILE_TYPE) {
|
||||
if (file->file_type == FILE_TYPE_GEOMETRY) {
|
||||
log_vrb(ctx, 1,
|
||||
"Geometry sections are not supported; ignoring\n");
|
||||
} else {
|
||||
log_err(ctx, "Cannot define %s in a keymap file\n",
|
||||
xkb_file_type_to_string(file->file_type));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -273,15 +273,8 @@ XkbMapConfig : OptFlags FileType OptMapName OBRACE
|
|||
DeclList
|
||||
CBRACE SEMI
|
||||
{
|
||||
if ($2 == FILE_TYPE_GEOMETRY) {
|
||||
free($3);
|
||||
FreeStmt($5);
|
||||
$$ = NULL;
|
||||
}
|
||||
else {
|
||||
$$ = XkbFileCreate($2, $3, $5, $1);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
FileType : XKB_KEYCODES { $$ = FILE_TYPE_KEYCODES; }
|
||||
|
|
Loading…
Reference in New Issue