pgsql: ecpg: Fix handling of strings in ORACLE compat code with SQLDA
От | Michael Paquier |
---|---|
Тема | pgsql: ecpg: Fix handling of strings in ORACLE compat code with SQLDA |
Дата | |
Msg-id | E1poayI-003cfj-Jc@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
ecpg: Fix handling of strings in ORACLE compat code with SQLDA When compiled with -C ORACLE, ecpg_get_data() had a one-off issue where it would incorrectly store the null terminator byte to str[-1] when varcharsize is 0, which is something that can happen when using SQLDA. This would eat 1 byte from the previous field stored, corrupting the results generated. All the callers of ecpg_get_data() estimate and allocate enough storage for the data received, and the fix of this commit relies on this assumption. Note that this maps to the case where no padding or truncation is required. This issue has been introduced by 3b7ab43 with the Oracle compatibility option, so backpatch down to v11. Author: Kyotaro Horiguchi Discussion: https://postgr.es/m/20230410.173500.440060475837236886.horikyota.ntt@gmail.com Backpatch-through: 11 Branch ------ REL_11_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/9eb44bb043af924d9fe567145a3c6510d584399b Modified Files -------------- src/interfaces/ecpg/ecpglib/data.c | 19 +- .../ecpg/test/compat_oracle/char_array.pgc | 31 ++- .../ecpg/test/expected/compat_oracle-char_array.c | 216 +++++++++++++++------ .../test/expected/compat_oracle-char_array.stderr | 166 +++++++++------- .../test/expected/compat_oracle-char_array.stdout | 5 + 5 files changed, 310 insertions(+), 127 deletions(-)
В списке pgsql-committers по дате отправления: