Using incorrect, or just mismatched, dictionary and affix files could result in a crash, due to failure to cross-check offsets obtained from the file. Add necessary validation, as well as some Asserts for future-proofing.
Per bug #16050 from Alexander Lakhin. Back-patch to 9.6 where the problem was introduced.
Arthur Zakirov, per initial investigation by Tomas Vondra
Discussion: https://firstname.lastname@example.org Discussion: https://postgr.es/m/20191013012610.2p2fp3zzpoav7jzf@development
8af1624e3f Validate ispell dictionaries more carefully.
src/backend/tsearch/spell.c | 25 ++++++++++++++++++++---
src/test/regress/expected/tsdicts.out | 34 ++++++++++++++++++++++++++++++++
src/test/regress/sql/tsdicts.sql | 37 +++++++++++++++++++++++++++++++++++
3 files changed, 93 insertions(+), 3 deletions(-)