postgresql/src/include
Tom Lane f02b9085ad Prevent integer overflows in array subscripting calculations.
While we were (mostly) careful about ensuring that the dimensions of
arrays aren't large enough to cause integer overflow, the lower bound
values were generally not checked.  This allows situations where
lower_bound + dimension overflows an integer.  It seems that that's
harmless so far as array reading is concerned, except that array
elements with subscripts notionally exceeding INT_MAX are inaccessible.
However, it confuses various array-assignment logic, resulting in a
potential for memory stomps.

Fix by adding checks that array lower bounds aren't large enough to
cause lower_bound + dimension to overflow.  (Note: this results in
disallowing cases where the last subscript position would be exactly
INT_MAX.  In principle we could probably allow that, but there's a lot
of code that computes lower_bound + dimension and would need adjustment.
It seems doubtful that it's worth the trouble/risk to allow it.)

Somewhat independently of that, array_set_element() was careless
about possible overflow when checking the subscript of a fixed-length
array, creating a different route to memory stomps.  Fix that too.

Security: CVE-2021-32027
2021-05-10 10:44:38 -04:00
..
access Revert recovery prefetching feature. 2021-05-10 16:06:09 +12:00
bootstrap Update copyright for 2021 2021-01-02 13:06:25 -05:00
catalog Revert recovery prefetching feature. 2021-05-10 16:06:09 +12:00
commands Revert per-index collation version tracking feature. 2021-05-07 21:10:11 +12:00
common Refactor HMAC implementations 2021-04-03 17:30:49 +09:00
datatype Update copyright for 2021 2021-01-02 13:06:25 -05:00
executor Undo decision to allow pg_proc.prosrc to be NULL. 2021-04-15 17:17:20 -04:00
fe_utils psql: Refine lexing of BEGIN...END blocks in CREATE FUNCTION statements 2021-04-16 12:20:23 +02:00
foreign Don't pass "ONLY" options specified in TRUNCATE to foreign data wrapper. 2021-04-27 14:41:27 +09:00
jit Update copyright for 2021 2021-01-02 13:06:25 -05:00
lib Fix typos and grammar in documentation and code comments 2021-04-09 13:53:07 +09:00
libpq Add heuristic incoming-message-size limits in the server. 2021-04-28 15:50:46 -04:00
mb Do COPY FROM encoding conversion/verification in larger chunks. 2021-04-01 12:23:40 +03:00
nodes Revert per-index collation version tracking feature. 2021-05-07 21:10:11 +12:00
optimizer Rename find_em_expr_usable_for_sorting_rel. 2021-04-20 11:37:36 -04:00
parser SQL-standard function body 2021-04-07 21:47:55 +02:00
partitioning Fix relcache inconsistency hazard in partition detach 2021-04-22 15:13:25 -04:00
port Add missing pthread_barrier_t. 2021-03-10 17:44:04 +13:00
portability Fix another portability bug in recent pgbench commit. 2021-03-10 23:20:41 +13:00
postmaster Remove temporary files after backend crash 2021-03-18 17:38:28 +01:00
regex Improve memory management in regex compiler. 2021-02-26 13:52:10 -05:00
replication Revert recovery prefetching feature. 2021-05-10 16:06:09 +12:00
rewrite Rework planning and execution of UPDATE and DELETE. 2021-03-31 11:52:37 -04:00
snowball Update snowball 2021-02-19 08:10:15 +01:00
statistics Extended statistics on expressions 2021-03-27 00:01:11 +01:00
storage Provide ReadRecentBuffer() to re-pin buffers by ID. 2021-04-08 17:50:25 +12:00
tcop SQL-standard function body 2021-04-07 21:47:55 +02:00
tsearch Don't leak compiled regex(es) when an ispell cache entry is dropped. 2021-03-18 22:22:47 -04:00
utils Prevent integer overflows in array subscripting calculations. 2021-05-10 10:44:38 -04:00
.gitignore Refactor dlopen() support 2018-09-06 11:33:04 +02:00
Makefile Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
c.h Work around issues in MinGW-64's setjmp/longjmp support. 2021-03-15 12:34:17 -04:00
fmgr.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
funcapi.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
getaddrinfo.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
getopt_long.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
miscadmin.h Add function to log the memory contexts of specified backend process. 2021-04-06 13:44:15 +09:00
pg_config.h.in Refactor HMAC implementations 2021-04-03 17:30:49 +09:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_manual.h Improve comments about USE_VALGRIND in pg_config_manual.h. 2021-05-09 19:33:24 -04:00
pg_getopt.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_trace.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
pgstat.h Revert recovery prefetching feature. 2021-05-10 16:06:09 +12:00
pgtar.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
pgtime.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
port.h Move bsearch_arg to src/port 2021-03-23 00:11:22 +01:00
postgres.h Mostly-cosmetic adjustments of TOAST-related macros. 2021-03-22 13:43:10 -04:00
postgres_ext.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
postgres_fe.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
rusagestub.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
windowapi.h Update copyright for 2021 2021-01-02 13:06:25 -05:00