Validate ispell dictionaries more carefully.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 2 Nov 2019 20:45:32 +0000 (16:45 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 2 Nov 2019 20:45:32 +0000 (16:45 -0400)
commit51b9ac5588bcb350bd9433307ee6a6236b01039b
treecd609c73701264f7de5379adfb5459944da66f72
parent52684bc7d9579fefa69e09797e798dbe2b0acbd2
Validate ispell dictionaries more carefully.

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://postgr.es/m/16050-024ae722464ab604@postgresql.org
Discussion: https://postgr.es/m/20191013012610.2p2fp3zzpoav7jzf@development
src/backend/tsearch/spell.c
src/test/regress/expected/tsdicts.out
src/test/regress/sql/tsdicts.sql