aboutsummaryrefslogtreecommitdiff
path: root/contrib/pgcrypto/pgp-decrypt.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2014-11-11 17:22:15 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2014-11-11 17:22:30 -0500
commit1c73485c695af2dfa7a7f7bec6e1ab8d4eaab7ab (patch)
treedfa453812d21f4efb60d40f3fa07d30215c1aa66 /contrib/pgcrypto/pgp-decrypt.c
parent951c2f6faf00a00ab824699c96376d1d8f5acc57 (diff)
downloadpostgresql-1c73485c695af2dfa7a7f7bec6e1ab8d4eaab7ab.tar.gz
postgresql-1c73485c695af2dfa7a7f7bec6e1ab8d4eaab7ab.zip
Loop when necessary in contrib/pgcrypto's pktreader_pull().
This fixes a scenario in which pgp_sym_decrypt() failed with "Wrong key or corrupt data" on messages whose length is 6 less than a power of 2. Per bug #11905 from Connor Penhale. Fix by Marko Tiikkaja, regression test case from Jeff Janes.
Diffstat (limited to 'contrib/pgcrypto/pgp-decrypt.c')
-rw-r--r--contrib/pgcrypto/pgp-decrypt.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/pgcrypto/pgp-decrypt.c b/contrib/pgcrypto/pgp-decrypt.c
index e03ee7f5f02..1fd7cf39767 100644
--- a/contrib/pgcrypto/pgp-decrypt.c
+++ b/contrib/pgcrypto/pgp-decrypt.c
@@ -182,7 +182,7 @@ pktreader_pull(void *priv, PullFilter *src, int len,
if (pkt->type == PKT_CONTEXT)
return pullf_read(src, len, data_p);
- if (pkt->len == 0)
+ while (pkt->len == 0)
{
/* this was last chunk in stream */
if (pkt->type == PKT_NORMAL)