| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- diff -Nru libxkbcommon-0.8.0.orig/src/xkbcomp/ast-build.c libxkbcommon-0.8.0/src/xkbcomp/ast-build.c
- --- libxkbcommon-0.8.0.orig/src/xkbcomp/ast-build.c 2017-12-12 13:40:28.000000000 +0100
- +++ libxkbcommon-0.8.0/src/xkbcomp/ast-build.c 2025-06-06 15:35:33.571894817 +0200
- @@ -72,7 +72,7 @@
- static ExprDef *
- ExprCreate(enum expr_op_type op, enum expr_value_type type, size_t size)
- {
- - ExprDef *expr = malloc(size);
- + ExprDef *expr = malloc(sizeof(ExprDef));
- if (!expr)
- return NULL;
-
- @@ -84,15 +84,12 @@
- return expr;
- }
-
- -#define EXPR_CREATE(type_, name_, op_, value_type_) \
- - ExprDef *name_ = ExprCreate(op_, value_type_, sizeof(type_)); \
- - if (!name_) \
- - return NULL;
- -
- ExprDef *
- ExprCreateString(xkb_atom_t str)
- {
- - EXPR_CREATE(ExprString, expr, EXPR_VALUE, EXPR_TYPE_STRING);
- + ExprDef *expr = ExprCreate(EXPR_VALUE, EXPR_TYPE_STRING, sizeof(ExprString));
- + if (!expr)
- + return NULL;
- expr->string.str = str;
- return expr;
- }
- @@ -100,7 +97,9 @@
- ExprDef *
- ExprCreateInteger(int ival)
- {
- - EXPR_CREATE(ExprInteger, expr, EXPR_VALUE, EXPR_TYPE_INT);
- + ExprDef *expr = ExprCreate(EXPR_VALUE, EXPR_TYPE_INT, sizeof(ExprInteger));
- + if (!expr)
- + return NULL;
- expr->integer.ival = ival;
- return expr;
- }
- @@ -108,7 +107,9 @@
- ExprDef *
- ExprCreateBoolean(bool set)
- {
- - EXPR_CREATE(ExprBoolean, expr, EXPR_VALUE, EXPR_TYPE_BOOLEAN);
- + ExprDef *expr = ExprCreate(EXPR_VALUE, EXPR_TYPE_BOOLEAN, sizeof(ExprBoolean));
- + if (!expr)
- + return NULL;
- expr->boolean.set = set;
- return expr;
- }
- @@ -116,7 +117,9 @@
- ExprDef *
- ExprCreateKeyName(xkb_atom_t key_name)
- {
- - EXPR_CREATE(ExprKeyName, expr, EXPR_VALUE, EXPR_TYPE_KEYNAME);
- + ExprDef *expr = ExprCreate(EXPR_VALUE, EXPR_TYPE_KEYNAME, sizeof(ExprKeyName));
- + if (!expr)
- + return NULL;
- expr->key_name.key_name = key_name;
- return expr;
- }
- @@ -124,7 +127,9 @@
- ExprDef *
- ExprCreateIdent(xkb_atom_t ident)
- {
- - EXPR_CREATE(ExprIdent, expr, EXPR_IDENT, EXPR_TYPE_UNKNOWN);
- + ExprDef *expr = ExprCreate(EXPR_IDENT, EXPR_TYPE_UNKNOWN, sizeof(ExprIdent));
- + if (!expr)
- + return NULL;
- expr->ident.ident = ident;
- return expr;
- }
- @@ -133,7 +138,9 @@
- ExprCreateUnary(enum expr_op_type op, enum expr_value_type type,
- ExprDef *child)
- {
- - EXPR_CREATE(ExprUnary, expr, op, type);
- + ExprDef *expr = ExprCreate(op, type, sizeof(ExprUnary));
- + if (!expr)
- + return NULL;
- expr->unary.child = child;
- return expr;
- }
- @@ -141,7 +148,9 @@
- ExprDef *
- ExprCreateBinary(enum expr_op_type op, ExprDef *left, ExprDef *right)
- {
- - EXPR_CREATE(ExprBinary, expr, op, EXPR_TYPE_UNKNOWN);
- + ExprDef *expr = ExprCreate(op, EXPR_TYPE_UNKNOWN, sizeof(ExprBinary));
- + if (!expr)
- + return NULL;
-
- if (op == EXPR_ASSIGN || left->expr.value_type == EXPR_TYPE_UNKNOWN)
- expr->expr.value_type = right->expr.value_type;
- @@ -157,7 +166,9 @@
- ExprDef *
- ExprCreateFieldRef(xkb_atom_t element, xkb_atom_t field)
- {
- - EXPR_CREATE(ExprFieldRef, expr, EXPR_FIELD_REF, EXPR_TYPE_UNKNOWN);
- + ExprDef *expr = ExprCreate(EXPR_FIELD_REF, EXPR_TYPE_UNKNOWN, sizeof(ExprFieldRef));
- + if (!expr)
- + return NULL;
- expr->field_ref.element = element;
- expr->field_ref.field = field;
- return expr;
- @@ -166,7 +177,9 @@
- ExprDef *
- ExprCreateArrayRef(xkb_atom_t element, xkb_atom_t field, ExprDef *entry)
- {
- - EXPR_CREATE(ExprArrayRef, expr, EXPR_ARRAY_REF, EXPR_TYPE_UNKNOWN);
- + ExprDef *expr = ExprCreate(EXPR_ARRAY_REF, EXPR_TYPE_UNKNOWN, sizeof(ExprArrayRef));
- + if (!expr)
- + return NULL;
- expr->array_ref.element = element;
- expr->array_ref.field = field;
- expr->array_ref.entry = entry;
- @@ -176,7 +189,9 @@
- ExprDef *
- ExprCreateAction(xkb_atom_t name, ExprDef *args)
- {
- - EXPR_CREATE(ExprAction, expr, EXPR_ACTION_DECL, EXPR_TYPE_UNKNOWN);
- + ExprDef *expr = ExprCreate(EXPR_ACTION_DECL, EXPR_TYPE_UNKNOWN, sizeof(ExprAction));
- + if (!expr)
- + return NULL;
- expr->action.name = name;
- expr->action.args = args;
- return expr;
- @@ -185,7 +200,9 @@
- ExprDef *
- ExprCreateKeysymList(xkb_keysym_t sym)
- {
- - EXPR_CREATE(ExprKeysymList, expr, EXPR_KEYSYM_LIST, EXPR_TYPE_SYMBOLS);
- + ExprDef *expr = ExprCreate(EXPR_KEYSYM_LIST, EXPR_TYPE_SYMBOLS, sizeof(ExprKeysymList));
- + if (!expr)
- + return NULL;
-
- darray_init(expr->keysym_list.syms);
- darray_init(expr->keysym_list.symsMapIndex);
- @@ -233,7 +250,7 @@
- darray_append(expr->keysym_list.symsNumEntries, numEntries);
- darray_concat(expr->keysym_list.syms, append->keysym_list.syms);
-
- - FreeStmt((ParseCommon *) &append);
- + FreeStmt((ParseCommon *) append);
-
- return expr;
- }
- @@ -438,15 +455,16 @@
- IncludeCreate(struct xkb_context *ctx, char *str, enum merge_mode merge)
- {
- IncludeStmt *incl, *first;
- - char *file, *map, *stmt, *tmp, *extra_data;
- + char *stmt, *tmp;
- char nextop;
-
- incl = first = NULL;
- - file = map = NULL;
- tmp = str;
- stmt = strdup_safe(str);
- while (tmp && *tmp)
- {
- + char *file = NULL, *map = NULL, *extra_data = NULL;
- +
- if (!ParseIncludeMap(&tmp, &file, &map, &nextop, &extra_data))
- goto err;
-
- @@ -470,8 +488,12 @@
- incl = incl->next_incl;
- }
-
- - if (!incl)
- + if (!incl) {
- + free(file);
- + free(map);
- + free(extra_data);
- break;
- + }
-
- incl->common.type = STMT_INCLUDE;
- incl->common.next = NULL;
- @@ -532,7 +554,7 @@
- enum xkb_file_type type;
- IncludeStmt *include = NULL;
- XkbFile *file = NULL;
- - ParseCommon *defs = NULL;
- + ParseCommon *defs = NULL, *defsLast = NULL;
-
- for (type = FIRST_KEYMAP_FILE_TYPE; type <= LAST_KEYMAP_FILE_TYPE; type++) {
- include = IncludeCreate(ctx, components[type], MERGE_DEFAULT);
- @@ -545,7 +567,10 @@
- goto err;
- }
-
- - defs = AppendStmt(defs, &file->common);
- + if (!defs)
- + defsLast = defs = &file->common;
- + else
- + defsLast = defsLast->next = &file->common;
- }
-
- file = XkbFileCreate(FILE_TYPE_KEYMAP, NULL, defs, 0);
- @@ -722,7 +747,7 @@
- const char *
- xkb_file_type_to_string(enum xkb_file_type type)
- {
- - if (type > _FILE_TYPE_NUM_ENTRIES)
- + if (type >= _FILE_TYPE_NUM_ENTRIES)
- return "unknown";
- return xkb_file_type_strings[type];
- }
|