diff --git a/contrib/pgcrypto/pgp-pgsql.c b/contrib/pgcrypto/pgp-pgsql.c index 1a0e710301..d0da05cd13 100644 --- a/contrib/pgcrypto/pgp-pgsql.c +++ b/contrib/pgcrypto/pgp-pgsql.c @@ -575,35 +575,25 @@ decrypt_internal(int is_pubenc, int need_text, text *data, err = pgp_set_symkey(ctx, (uint8 *) VARDATA(key), VARSIZE(key) - VARHDRSZ); - /* - * decrypt - */ + /* decrypt */ if (err >= 0) + { err = pgp_decrypt(ctx, src, dst); - /* - * failed? - */ - if (err < 0) - goto out; + if (ex.expect) + check_expect(ctx, &ex); - if (ex.expect) - check_expect(ctx, &ex); + /* remember the setting */ + got_unicode = pgp_get_unicode_mode(ctx); + } - /* remember the setting */ - got_unicode = pgp_get_unicode_mode(ctx); - -out: - if (src) - mbuf_free(src); - if (ctx) - pgp_free(ctx); + mbuf_free(src); + pgp_free(ctx); if (err) { px_set_debug_handler(NULL); - if (dst) - mbuf_free(dst); + mbuf_free(dst); ereport(ERROR, (errcode(ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), errmsg("%s", px_strerror(err))));