postgresql/contrib/pgcrypto/Makefile
Michael Paquier 379695d3cc pgcrypto: Fix buffer overflow in pgp_pub_decrypt_bytea()
pgp_pub_decrypt_bytea() was missing a safeguard for the session key
length read from the message data, that can be given in input of
pgp_pub_decrypt_bytea().  This can result in the possibility of a buffer
overflow for the session key data, when the length specified is longer
than PGP_MAX_KEY, which is the maximum size of the buffer where the
session data is copied to.

A script able to rebuild the message and key data that can trigger the
overflow is included in this commit, based on some contents provided by
the reporter, heavily editted by me.  A SQL test is added, based on the
data generated by the script.

Reported-by: Team Xint Code as part of zeroday.cloud
Author: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Noah Misch <noah@leadboat.com>
Security: CVE-2026-2005
Backpatch-through: 14
2026-02-09 08:00:59 +09:00

68 lines
1.5 KiB
Makefile

# contrib/pgcrypto/Makefile
ZLIB_TST = pgp-compression
ZLIB_OFF_TST = pgp-zlib-DISABLED
CF_PGP_TESTS = $(if $(subst no,,$(with_zlib)), $(ZLIB_TST), $(ZLIB_OFF_TST))
OBJS = \
$(WIN32RES) \
crypt-blowfish.o \
crypt-des.o \
crypt-gensalt.o \
crypt-md5.o \
crypt-sha.o \
mbuf.o \
openssl.o \
pgcrypto.o \
pgp-armor.o \
pgp-cfb.o \
pgp-compress.o \
pgp-decrypt.o \
pgp-encrypt.o \
pgp-info.o \
pgp-mpi.o \
pgp-mpi-openssl.o \
pgp-pgsql.o \
pgp-pubdec.o \
pgp-pubenc.o \
pgp-pubkey.o \
pgp-s2k.o \
pgp.o \
px-crypt.o \
px-hmac.o \
px.o
MODULE_big = pgcrypto
EXTENSION = pgcrypto
DATA = pgcrypto--1.3.sql pgcrypto--1.2--1.3.sql pgcrypto--1.1--1.2.sql \
pgcrypto--1.0--1.1.sql pgcrypto--1.3--1.4.sql
PGFILEDESC = "pgcrypto - cryptographic functions"
REGRESS = init md5 sha1 hmac-md5 hmac-sha1 blowfish rijndael \
sha2 des 3des cast5 \
crypt-des crypt-md5 crypt-blowfish crypt-xdes \
pgp-armor pgp-decrypt pgp-encrypt pgp-encrypt-md5 $(CF_PGP_TESTS) \
pgp-pubkey-decrypt pgp-pubkey-encrypt pgp-pubkey-session \
pgp-info crypt-shacrypt
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = contrib/pgcrypto
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif
# Add libraries that pgcrypto depends (or might depend) on into the
# shared library link. (The order in which you list them here doesn't
# matter.)
SHLIB_LINK += $(filter -lcrypto -lz, $(LIBS))
ifeq ($(PORTNAME), win32)
# those must be at the end
SHLIB_LINK += -lws2_32
endif