]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
pgcrypto: Check for error return of px_cipher_decrypt()
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Sat, 25 Sep 2021 09:25:48 +0000 (11:25 +0200)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Sat, 25 Sep 2021 09:25:48 +0000 (11:25 +0200)
This has previously not been a problem (that anyone ever reported),
but in future OpenSSL versions (3.0.0), where legacy ciphers are/can
be disabled, this is the place where this is reported.  So we need to
catch the error here, otherwise the higher-level functions would
return garbage.  The nearby encryption code already handled errors
similarly.

Author: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Discussion: https://www.postgresql.org/message-id/9e9c431c-0adc-7a6d-9b1a-915de1ba3fe7@enterprisedb.com
Backpatch-through: 9.6

contrib/pgcrypto/px.c

index aea8e863af056990247107ff0078323a99856ebb..f26683aa11b9b63463789d6793e688223da1513c 100644 (file)
@@ -300,6 +300,7 @@ static int
 combo_decrypt(PX_Combo *cx, const uint8 *data, unsigned dlen,
                          uint8 *res, unsigned *rlen)
 {
+       int                     err = 0;
        unsigned        bs,
                                i,
                                pad;
@@ -325,7 +326,9 @@ combo_decrypt(PX_Combo *cx, const uint8 *data, unsigned dlen,
 
        /* decrypt */
        *rlen = dlen;
-       px_cipher_decrypt(c, data, dlen, res);
+       err = px_cipher_decrypt(c, data, dlen, res);
+       if (err)
+               return err;
 
        /* unpad */
        if (bs > 1 && cx->padding)