postgresql/contrib/pgcrypto
Tom Lane b9b610577d Fix ancient violation of zlib's API spec.
contrib/pgcrypto mishandled the case where deflate() does not consume
all of the offered input on the first try.  It reset the next_in pointer
to the start of the input instead of leaving it alone, causing the wrong
data to be fed to the next deflate() call.

This has been broken since pgcrypto was committed.  The reason for the
lack of complaints seems to be that it's fairly hard to get stock zlib
to not consume all the input, so long as the output buffer is big enough
(which it normally would be in pgcrypto's usage; AFAICT the input is
always going to be packetized into packets no larger than ZIP_OUT_BUF).
However, IBM's zlibNX implementation for AIX evidently will do it
in some cases.

I did not add a test case for this, because I couldn't find one that
would fail with stock zlib.  When we put back the test case for
bug #16476, that will cover the zlibNX situation well enough.

While here, write deflate()'s second argument as Z_NO_FLUSH per its
API spec, instead of hard-wiring the value zero.

Per buildfarm results and subsequent investigation.

Discussion: https://postgr.es/m/16476-692ef7b84e5fb893@postgresql.org
2020-07-23 17:20:01 -04:00
..
expected Revert "Fix corner case with PGP decompression in pgcrypto" 2020-07-23 08:29:08 +09:00
sql Revert "Fix corner case with PGP decompression in pgcrypto" 2020-07-23 08:29:08 +09:00
.gitignore Support SCRAM-SHA-256 authentication (RFC 5802 and 7677). 2017-03-07 14:25:40 +02:00
blf.c Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
blf.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
crypt-blowfish.c Get rid of trailing semicolons in C macro definitions. 2020-05-01 17:28:00 -04:00
crypt-des.c Fix many typos and inconsistencies 2019-07-01 10:00:23 +09:00
crypt-gensalt.c Phase 3 of pgindent updates. 2017-06-21 15:35:54 -04:00
crypt-md5.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
imath.c Update copyrights for 2020 2020-01-01 12:21:45 -05:00
imath.h Initial pgindent run for v12. 2019-05-22 12:55:34 -04:00
internal-sha2.c Refactor SHA2 functions and move them to src/common/. 2017-03-07 14:23:49 +02:00
internal.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
Makefile Remove support for upgrading extensions from "unpackaged" state. 2020-02-19 16:59:14 -05:00
mbuf.c Remove useless "return;" lines 2019-11-28 16:48:37 -03:00
mbuf.h Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
md5.c Resolve one unconstify use 2019-02-14 17:00:25 +01:00
md5.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
openssl.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgcrypto--1.0--1.1.sql Add gen_random_uuid() to contrib/pgcrypto. 2014-01-17 16:52:06 -05:00
pgcrypto--1.1--1.2.sql Add functions for dealing with PGP armor header lines to pgcrypto. 2014-10-01 16:03:39 +03:00
pgcrypto--1.2--1.3.sql Update pgcrypto extension for parallel query. 2016-06-09 17:18:14 -04:00
pgcrypto--1.3.sql Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
pgcrypto.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgcrypto.control Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
pgcrypto.h Remove unnecessary prototypes 2016-09-30 14:04:16 -04:00
pgp-armor.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-cfb.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-compress.c Fix ancient violation of zlib's API spec. 2020-07-23 17:20:01 -04:00
pgp-decrypt.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-encrypt.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-info.c Dial back -Wimplicit-fallthrough to level 3 2020-05-13 15:31:14 -04:00
pgp-mpi-internal.c Clear some style deviations. 2020-05-21 08:31:16 -07:00
pgp-mpi-openssl.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-mpi.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-pgsql.c Introduce macros for typalign and typstorage constants. 2020-03-04 10:34:25 -05:00
pgp-pubdec.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-pubenc.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-pubkey.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp-s2k.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
pgp.h Fix inconsistencies and typos in the tree, take 10 2019-08-13 13:53:41 +09:00
px-crypt.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
px-crypt.h Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
px-hmac.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
px.c Remove configure switch --disable-strong-random 2019-01-01 20:05:51 +09:00
px.h Fix inconsistencies and typos in the tree, take 9 2019-08-05 12:14:58 +09:00
rijndael.c Fix a boatload of typos in C comments. 2018-04-01 15:01:28 -04:00
rijndael.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
rijndael.tbl Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
sha1.c Fix inconsistencies and typos in the tree, take 9 2019-08-05 12:14:58 +09:00
sha1.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00