Fix overflow in parsing of positional parameter
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 2 Jul 2024 07:16:36 +0000 (09:16 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Tue, 2 Jul 2024 07:29:26 +0000 (09:29 +0200)
commitd35cd061998434747c0d1c0f6f2aa1f736f0edb4
tree36ed3648c04c61639f7ee19a00a6698042093c13
parent4867f8a555cea1bc6de1726b0030896aa4cd3c70
Fix overflow in parsing of positional parameter

Replace atol with pg_strtoint32_safe in the backend parser and with
strtoint in ECPG to reject overflows when parsing the number of a
positional parameter.  With atol from glibc, parameters $2147483648 and
$4294967297 turn into $-2147483648 and $1, respectively.

Author: Erik Wienhold <ewie@ewie.name>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: Alexander Lakhin <exclusion@gmail.com>
Discussion: http://www.postgresql.org/message-id/flat/5d216d1c-91f6-4cbe-95e2-b4cbd930520c@ewie.name
src/backend/parser/scan.l
src/interfaces/ecpg/preproc/pgc.l
src/test/regress/expected/numerology.out
src/test/regress/sql/numerology.sql