]> git.ipfire.org Git - thirdparty/postgresql.git/commit
hstore: Tighten key/value parsing check for whitespaces
authorMichael Paquier <michael@paquier.xyz>
Mon, 12 Jun 2023 00:14:14 +0000 (09:14 +0900)
committerMichael Paquier <michael@paquier.xyz>
Mon, 12 Jun 2023 00:14:14 +0000 (09:14 +0900)
commite0e6829459b0e0566dc4493675522afb69d39f36
treeaf34d21e94dd0d5d31c8af9873a32f4e32d63aee
parentc6043fcbb23875926f3b674b2e22dfaa9c6cf300
hstore: Tighten key/value parsing check for whitespaces

isspace() can be locale-sensitive depending on the platform, causing
hstore to consider as whitespaces characters it should not see as such.
For example, U+0105, being decoded as 0xC4 0x85 in UTF-8, would be
discarded from the input given.

This problem is similar to 9ae2661, though it was missed that hstore
can also manipulate non-ASCII inputs, so replace the existing isspace()
calls with scanner_isspace().

This problem exists for a long time, so backpatch all the way down.

Author: Evan Jones
Discussion: https://postgr.es/m/CA+HWA9awUW0+RV_gO9r1ABZwGoZxPztcJxPy8vMFSTbTfi4jig@mail.gmail.com
Backpatch-through: 11
contrib/hstore/Makefile
contrib/hstore/expected/hstore_utf8.out [new file with mode: 0644]
contrib/hstore/expected/hstore_utf8_1.out [new file with mode: 0644]
contrib/hstore/hstore_io.c
contrib/hstore/sql/hstore_utf8.sql [new file with mode: 0644]