Use safer allocation routines in more places of the tree This is part of a more global effort to modernize the code tree with safer allocation functions, which offer more protection in terms of: - stronger type safety guarantees - size overflow checks, particulary for arrays.
This set of updates includes allocation changes based on palloc_object(), palloc_array() and repalloc_array(). This work is similar to 1b105f9472bd, expanding more the new APIs in the tree in an incremental fashion. Author: Tristan Partin <[email protected]> Discussion: https://postgr.es/m/[email protected] Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/51c43a5dbd86ad8461544e54c00bd9f487abfacd Modified Files -------------- contrib/btree_gist/btree_bool.c | 2 +- contrib/btree_gist/btree_cash.c | 2 +- contrib/btree_gist/btree_date.c | 2 +- contrib/btree_gist/btree_enum.c | 2 +- contrib/btree_gist/btree_float4.c | 2 +- contrib/btree_gist/btree_float8.c | 2 +- contrib/btree_gist/btree_inet.c | 2 +- contrib/btree_gist/btree_int2.c | 2 +- contrib/btree_gist/btree_int4.c | 2 +- contrib/btree_gist/btree_int8.c | 2 +- contrib/btree_gist/btree_interval.c | 2 +- contrib/btree_gist/btree_macaddr.c | 2 +- contrib/btree_gist/btree_macaddr8.c | 2 +- contrib/btree_gist/btree_oid.c | 2 +- contrib/btree_gist/btree_time.c | 2 +- contrib/btree_gist/btree_ts.c | 2 +- contrib/btree_gist/btree_utils_num.c | 12 +++--- contrib/btree_gist/btree_uuid.c | 2 +- contrib/dict_xsyn/dict_xsyn.c | 2 +- contrib/file_fdw/file_fdw.c | 4 +- contrib/hstore/hstore_gin.c | 6 +-- contrib/hstore/hstore_io.c | 18 ++++---- contrib/hstore/hstore_op.c | 18 ++++---- contrib/pageinspect/btreefuncs.c | 2 +- contrib/pageinspect/ginfuncs.c | 2 +- contrib/pg_logicalinspect/pg_logicalinspect.c | 4 +- contrib/pg_plan_advice/pgpa_scan.c | 2 +- contrib/pg_stash_advice/stashpersist.c | 5 +-- contrib/pg_stat_statements/pg_stat_statements.c | 2 +- contrib/pg_trgm/trgm_gist.c | 2 +- contrib/pg_trgm/trgm_regexp.c | 5 +-- contrib/pg_visibility/pg_visibility.c | 5 +-- contrib/pgrowlocks/pgrowlocks.c | 8 ++-- contrib/postgres_fdw/connection.c | 4 +- contrib/postgres_fdw/postgres_fdw.c | 13 +++--- contrib/seg/seg.c | 7 ++-- contrib/tablefunc/tablefunc.c | 8 ++-- contrib/xml2/xpath.c | 4 +- contrib/xml2/xslt_proc.c | 5 +-- doc/src/sgml/xfunc.sgml | 8 ++-- src/backend/access/brin/brin_minmax_multi.c | 4 +- src/backend/access/common/printtup.c | 3 +- src/backend/access/common/reloptions.c | 7 ++-- src/backend/access/common/tupdesc.c | 6 +-- src/backend/access/gin/gindatapage.c | 4 +- src/backend/access/gin/ginget.c | 8 ++-- src/backend/access/gin/gininsert.c | 6 +-- src/backend/access/gin/ginpostinglist.c | 8 ++-- src/backend/access/gin/ginscan.c | 10 ++--- src/backend/access/gist/gistbuildbuffers.c | 14 +++---- src/backend/access/gist/gistget.c | 8 +--- src/backend/access/gist/gistproc.c | 10 ++--- src/backend/access/gist/gistscan.c | 8 ++-- src/backend/access/gist/gistsplit.c | 12 +++--- src/backend/access/gist/gistxlog.c | 2 +- src/backend/access/heap/heapam.c | 4 +- src/backend/access/heap/vacuumlazy.c | 3 +- src/backend/access/nbtree/nbtinsert.c | 10 ++--- src/backend/access/nbtree/nbtpage.c | 5 +-- src/backend/access/nbtree/nbtpreprocesskeys.c | 20 ++++----- src/backend/access/nbtree/nbtree.c | 2 +- src/backend/access/tablesample/bernoulli.c | 2 +- src/backend/access/transam/multixact.c | 2 +- src/backend/access/transam/twophase.c | 4 +- src/backend/access/transam/xact.c | 5 +-- src/backend/access/transam/xloginsert.c | 5 +-- src/backend/backup/basebackup_incremental.c | 2 +- src/backend/catalog/aclchk.c | 2 +- src/backend/catalog/dependency.c | 21 ++++------ src/backend/catalog/heap.c | 2 +- src/backend/catalog/pg_constraint.c | 6 +-- src/backend/catalog/pg_inherits.c | 4 +- src/backend/catalog/pg_shdepend.c | 7 +--- src/backend/commands/alter.c | 18 ++++---- src/backend/commands/analyze.c | 49 ++++++++++------------ src/backend/commands/async.c | 2 +- src/backend/commands/collationcmds.c | 5 +-- src/backend/commands/copyfrom.c | 18 ++++---- src/backend/commands/copyfromparse.c | 4 +- src/backend/commands/copyto.c | 4 +- src/backend/commands/dbcommands.c | 2 +- src/backend/commands/explain.c | 7 ++-- src/backend/commands/explain_dr.c | 2 +- src/backend/commands/explain_state.c | 10 ++--- src/backend/commands/extension.c | 2 +- src/backend/commands/functioncmds.c | 14 +++---- src/backend/commands/policy.c | 2 +- src/backend/commands/subscriptioncmds.c | 6 +-- src/backend/commands/tablecmds.c | 7 ++-- src/backend/commands/tablespace.c | 2 +- src/backend/commands/trigger.c | 28 ++++++------- src/backend/commands/vacuum.c | 2 +- src/backend/executor/execExpr.c | 5 +-- src/backend/executor/execExprInterp.c | 12 +++--- src/backend/executor/execGrouping.c | 6 +-- src/backend/executor/execJunk.c | 4 +- src/backend/executor/execParallel.c | 6 +-- src/backend/executor/execPartition.c | 22 +++++----- src/backend/executor/execSRF.c | 4 +- src/backend/executor/execTuples.c | 10 ++--- src/backend/executor/execUtils.c | 7 ++-- src/backend/executor/functions.c | 2 +- src/backend/executor/nodeAgg.c | 24 ++++------- src/backend/executor/nodeAppend.c | 9 ++-- src/backend/executor/nodeBitmapAnd.c | 2 +- src/backend/executor/nodeBitmapOr.c | 2 +- src/backend/executor/nodeGather.c | 3 +- src/backend/executor/nodeGatherMerge.c | 9 ++-- src/backend/executor/nodeIncrementalSort.c | 4 +- src/backend/executor/nodeIndexscan.c | 44 ++++++++----------- src/backend/executor/nodeMemoize.c | 6 +-- src/backend/executor/nodeMergejoin.c | 2 +- src/backend/executor/nodeModifyTable.c | 2 +- src/backend/executor/nodeSetOp.c | 3 +- src/backend/executor/nodeSubplan.c | 14 +++---- src/backend/executor/nodeTidscan.c | 15 ++----- src/backend/executor/nodeValuesscan.c | 6 +-- src/backend/executor/spi.c | 4 +- src/backend/jit/llvm/llvmjit_expr.c | 3 +- src/backend/lib/bipartite_match.c | 8 ++-- src/backend/lib/knapsack.c | 4 +- src/backend/libpq/be-secure-common.c | 2 +- src/backend/libpq/be-secure-openssl.c | 2 +- src/backend/libpq/hba.c | 4 +- src/backend/nodes/list.c | 3 +- src/backend/nodes/queryjumblefuncs.c | 10 ++--- src/backend/nodes/readfuncs.c | 2 +- src/backend/optimizer/path/allpaths.c | 8 ++-- src/backend/optimizer/path/equivclass.c | 3 +- src/backend/optimizer/path/pathkeys.c | 4 +- src/backend/optimizer/plan/analyzejoins.c | 2 +- src/backend/optimizer/plan/createplan.c | 46 ++++++++++---------- src/backend/optimizer/plan/initsplan.c | 2 +- src/backend/optimizer/plan/planner.c | 22 +++++----- src/backend/optimizer/plan/setrefs.c | 6 +-- src/backend/optimizer/prep/prepjointree.c | 15 +++---- src/backend/optimizer/util/appendinfo.c | 3 +- src/backend/optimizer/util/clauses.c | 4 +- src/backend/optimizer/util/extendplan.c | 3 +- src/backend/optimizer/util/inherit.c | 3 +- src/backend/optimizer/util/plancat.c | 6 +-- src/backend/optimizer/util/tlist.c | 11 +++-- src/backend/parser/analyze.c | 5 +-- src/backend/parser/parse_clause.c | 5 +-- src/backend/parser/parse_cte.c | 2 +- src/backend/parser/parse_relation.c | 6 +-- src/backend/partitioning/partbounds.c | 24 +++++------ src/backend/partitioning/partdesc.c | 10 ++--- src/backend/partitioning/partprune.c | 11 +++-- src/backend/postmaster/autovacuum.c | 2 +- src/backend/postmaster/checkpointer.c | 2 +- src/backend/postmaster/datachecksum_state.c | 2 +- src/backend/postmaster/pmchild.c | 2 +- src/backend/postmaster/postmaster.c | 2 +- src/backend/replication/pgoutput/pgoutput.c | 2 +- src/backend/rewrite/rewriteHandler.c | 4 +- src/backend/statistics/dependencies.c | 5 ++- src/backend/statistics/extended_stats.c | 10 ++--- src/backend/statistics/mcv.c | 4 +- src/backend/statistics/mvdistinct.c | 3 +- src/backend/storage/buffer/bufmgr.c | 2 +- src/backend/storage/ipc/shmem.c | 2 +- src/backend/storage/lmgr/deadlock.c | 18 ++++---- src/backend/storage/lmgr/lock.c | 22 ++++------ src/backend/storage/lmgr/lwlock.c | 2 +- src/backend/storage/smgr/md.c | 4 +- src/backend/tcop/fastpath.c | 2 +- src/backend/tsearch/dict_thesaurus.c | 6 +-- src/backend/tsearch/spell.c | 18 ++++---- src/backend/tsearch/ts_parse.c | 6 +-- src/backend/tsearch/wparser.c | 2 +- src/backend/tsearch/wparser_def.c | 4 +- src/backend/utils/activity/pgstat_xact.c | 3 +- src/backend/utils/adt/acl.c | 2 +- src/backend/utils/adt/array_typanalyze.c | 4 +- src/backend/utils/adt/array_userfuncs.c | 12 +++--- src/backend/utils/adt/arrayfuncs.c | 40 ++++++++---------- src/backend/utils/adt/arrayutils.c | 2 +- src/backend/utils/adt/enum.c | 4 +- src/backend/utils/adt/jsonb_util.c | 8 ++-- src/backend/utils/adt/jsonfuncs.c | 13 +++--- src/backend/utils/adt/levenshtein.c | 2 +- src/backend/utils/adt/like_support.c | 4 +- src/backend/utils/adt/lockfuncs.c | 6 +-- src/backend/utils/adt/multirangetypes.c | 13 +++--- src/backend/utils/adt/name.c | 2 +- src/backend/utils/adt/numeric.c | 10 ++--- src/backend/utils/adt/oracle_compat.c | 8 ++-- src/backend/utils/adt/orderedsetaggs.c | 20 ++++----- src/backend/utils/adt/pg_ndistinct.c | 2 +- src/backend/utils/adt/rangetypes_typanalyze.c | 4 +- src/backend/utils/adt/regexp.c | 3 +- src/backend/utils/adt/rowtypes.c | 32 +++++++------- src/backend/utils/adt/ruleutils.c | 25 ++++++----- src/backend/utils/adt/selfuncs.c | 4 +- src/backend/utils/adt/tsquery_rewrite.c | 2 +- src/backend/utils/adt/tsrank.c | 2 +- src/backend/utils/adt/tsvector.c | 6 +-- src/backend/utils/adt/tsvector_op.c | 9 ++-- src/backend/utils/adt/xml.c | 4 +- src/backend/utils/cache/catcache.c | 2 +- src/backend/utils/cache/inval.c | 7 +--- src/backend/utils/cache/lsyscache.c | 2 +- src/backend/utils/cache/relcache.c | 19 ++++----- src/backend/utils/cache/typcache.c | 11 ++--- src/backend/utils/misc/conffiles.c | 3 +- src/backend/utils/misc/tzparser.c | 2 +- src/backend/utils/sort/logtape.c | 8 ++-- src/backend/utils/sort/tuplesort.c | 8 ++-- src/backend/utils/sort/tuplesortvariants.c | 14 +++---- src/backend/utils/sort/tuplestore.c | 8 ++-- src/backend/utils/time/combocid.c | 3 +- src/backend/utils/time/snapmgr.c | 4 +- src/common/blkreftable.c | 14 +++---- src/common/rmtree.c | 3 +- src/include/lib/simplehash.h | 2 +- src/pl/plpgsql/src/pl_comp.c | 2 +- src/pl/plpgsql/src/pl_gram.y | 2 +- src/pl/plpython/plpy_cursorobject.c | 4 +- src/pl/plpython/plpy_exec.c | 6 +-- src/pl/plpython/plpy_procedure.c | 4 +- src/pl/plpython/plpy_spi.c | 4 +- src/test/modules/plsample/plsample.c | 2 +- src/test/modules/test_aio/test_aio.c | 10 ++--- src/test/modules/test_binaryheap/test_binaryheap.c | 2 +- src/test/modules/test_integerset/test_integerset.c | 2 +- src/test/modules/test_radixtree/test_radixtree.c | 2 +- src/test/modules/test_rbtree/test_rbtree.c | 8 ++-- src/test/modules/test_regex/test_regex.c | 8 ++-- .../modules/test_resowner/test_resowner_basic.c | 4 +- .../modules/test_resowner/test_resowner_many.c | 4 +- src/test/modules/test_saslprep/test_saslprep.c | 2 +- src/test/modules/test_tidstore/test_tidstore.c | 12 +++--- src/test/regress/regress.c | 14 +++---- 234 files changed, 728 insertions(+), 892 deletions(-)
