postgresql/src/test
David Rowley 348233cb12 Fix incorrect accessing of pfree'd memory in Memoize
For pass-by-reference types, the code added in 0b053e78b, which aimed to
resolve a memory leak, was overly aggressive in resetting the per-tuple
memory context which could result in pfree'd memory being accessed
resulting in failing to find previously cached results in the hash
table.

What was happening was prepare_probe_slot() was switching to the
per-tuple memory context and calling ExecEvalExpr().  ExecEvalExpr() may
have required a memory allocation.  Both MemoizeHash_hash() and
MemoizeHash_equal() were aggressively resetting the per-tuple context
and after determining the hash value, the context would have gotten reset
before MemoizeHash_equal() was called.  This could have resulted in
MemoizeHash_equal() looking at pfree'd memory.

This is less likely to have caused issues on a production build as some
other allocation would have had to have reused the pfree'd memory to
overwrite it.  Otherwise, the original contents would have been intact.
However, this clearly caused issues on MEMORY_CONTEXT_CHECKING builds.

Author: Tender Wang, Andrei Lepikhov
Reported-by: Tender Wang (using SQLancer)
Reviewed-by: Andrei Lepikhov, Richard Guo, David Rowley
Discussion: https://postgr.es/m/CAHewXNnT6N6UJkya0z-jLFzVxcwGfeRQSfhiwA+NyLg-x8iGew@mail.gmail.com
Backpatch-through: 14, where Memoize was added
2024-03-11 18:20:39 +13:00
..
authentication Refactor routine to find single log content pattern in TAP tests 2023-06-09 11:56:27 +09:00
examples Update copyright for 2023 2023-01-02 15:00:37 -05:00
icu initdb: change default --locale-provider back to libc. 2023-06-21 11:10:03 -07:00
isolation Fix handling of self-modified tuples in MERGE. 2024-03-07 09:55:39 +00:00
kerberos Spell the values of libpq's gssdelegation parameter as "0" and "1". 2023-05-22 11:50:27 -04:00
ldap Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
locale Update copyright for 2023 2023-01-02 15:00:37 -05:00
mb Fix MB regression tests for WAL-logging of hash indexes. 2017-03-15 07:25:36 -04:00
modules Allow new role 'regress_dump_login_role' to log in under SSPI. 2023-11-14 00:31:39 -05:00
perl Fix test race between primary XLOG_RUNNING_XACTS and standby logical slot. 2024-02-19 12:52:49 -08:00
recovery Fix test race between primary XLOG_RUNNING_XACTS and standby logical slot. 2024-02-19 12:52:49 -08:00
regress Fix incorrect accessing of pfree'd memory in Memoize 2024-03-11 18:20:39 +13:00
ssl Use BIO_{get,set}_app_data instead of BIO_{get,set}_data. 2023-11-28 12:34:03 -05:00
subscription Back-patch test modifications that were done as part of b6df0798a5. 2024-02-26 09:33:57 +05:30
Makefile Refactor PG_TEST_EXTRA logic in autoconf build 2022-09-20 11:24:16 -07:00
meson.build Update copyright for 2023 2023-01-02 15:00:37 -05:00
README Remove the option to build thread_test.c outside configure. 2020-10-21 12:08:48 -04:00

PostgreSQL tests
================

This directory contains a variety of test infrastructure as well as some of the
tests in PostgreSQL. Not all tests are here -- in particular, there are more in
individual contrib/ modules and in src/bin.

Not all these tests get run by "make check". Check src/test/Makefile to see
which tests get run automatically.

authentication/
  Tests for authentication (but see also below)

examples/
  Demonstration programs for libpq that double as regression tests via
  "make check"

isolation/
  Tests for concurrent behavior at the SQL level

kerberos/
  Tests for Kerberos/GSSAPI authentication and encryption

ldap/
  Tests for LDAP-based authentication

locale/
  Sanity checks for locale data, encodings, etc

mb/
  Tests for multibyte encoding (UTF-8) support

modules/
  Extensions used only or mainly for test purposes, generally not suitable
  for installing in production databases

perl/
  Infrastructure for Perl-based TAP tests

recovery/
  Test suite for recovery and replication

regress/
  PostgreSQL's main regression test suite, pg_regress

ssl/
  Tests to exercise and verify SSL certificate handling

subscription/
  Tests for logical replication