From 5ee76ac8c070037b311a960d8231e02f75d0c134 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sun, 13 May 2001 02:17:09 +0000
Subject: [PATCH] > I've been experimenting with pgcrypto 0.3 (distributed with
 > Postgres 7.1.0), and I think I've found a bug. > > I compiled Pgcrypto with
 OpenSSL, using gcc 2.95.4 and > OpenSSL 0.9.6a (the latest Debian 'unstable'
 packages).

> web=> select encode(digest('blah', 'sha1'), 'base64');
> FATAL 1:  pg_encode: overflow, encode estimate too small
> pqReadData() -- backend closed the channel unexpectedly.
>         This probably means the backend terminated abnormally
>         before or while processing the request.
> The connection to the server was lost. Attempting reset: Succeeded.

> Is this a bug? Can it be fixed?

This is a bug alright.  And a silly one :)

Marko Kreen
---
 contrib/pgcrypto/encode.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contrib/pgcrypto/encode.c b/contrib/pgcrypto/encode.c
index b6db217c836..7a575dacd14 100644
--- a/contrib/pgcrypto/encode.c
+++ b/contrib/pgcrypto/encode.c
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: encode.c,v 1.4 2001/03/22 03:59:10 momjian Exp $
+ * $Id: encode.c,v 1.5 2001/05/13 02:17:09 momjian Exp $
  */
 
 #include "postgres.h"
@@ -349,7 +349,7 @@ hex_dec_len(uint srclen)
 uint
 b64_enc_len(uint srclen)
 {
-	return srclen + (srclen / 3) + (srclen / (76 / 2));
+	return srclen + (srclen + 2 / 3) + (srclen / (76 / 2)) + 2;
 }
 
 uint
-- 
GitLab