fix(wasm): fix alias map size computation

This fixes a crash where parsing with certain languages can lead to a crash due to how the alias map was allocated and laid out in wasm memory

(cherry picked from commit f09dc3cf46)
This commit is contained in:
Nia 2025-09-19 00:34:27 +02:00 committed by Amaan Qureshi
parent 17d3f85582
commit 32d784ec8f
5 changed files with 78 additions and 13 deletions

View file

@ -1377,11 +1377,12 @@ const TSLanguage *ts_wasm_store_load_language(
if (symbol == 0) break;
uint16_t value_count;
memcpy(&value_count, &memory[wasm_language.alias_map + alias_map_size], sizeof(value_count));
alias_map_size += sizeof(uint16_t);
alias_map_size += value_count * sizeof(TSSymbol);
}
language->alias_map = copy(
&memory[wasm_language.alias_map],
alias_map_size * sizeof(TSSymbol)
alias_map_size
);
language->alias_sequences = copy(
&memory[wasm_language.alias_sequences],