Validate ispell dictionaries more carefully.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 65cdf8bc1be4857724c3d0d0bfbaedac8231af5f
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2019-11-02T20:45:32Z
Releases: 11.6
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

Files

PathChange+/−
src/backend/tsearch/spell.c modified +22 −3
src/test/regress/expected/tsdicts.out modified +34 −0
src/test/regress/sql/tsdicts.sql modified +37 −0

Discussion