From 2787db9b1d3a041913d0b5e8c888bc9619f6571a Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon, 18 Jul 2005 17:09:01 +0000
Subject: [PATCH] Small cleanups for pgcrypto.  Marko Kreen

---
 contrib/pgcrypto/fortuna.c      |  7 +++----
 contrib/pgcrypto/internal.c     | 13 ++++++++++++-
 contrib/pgcrypto/pgp-compress.c |  8 ++++++--
 contrib/pgcrypto/pgp-decrypt.c  |  5 +++--
 contrib/pgcrypto/pgp.h          |  4 +---
 contrib/pgcrypto/random.c       |  6 ++++--
 6 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/contrib/pgcrypto/fortuna.c b/contrib/pgcrypto/fortuna.c
index 7aa9270729f..b02618430e2 100644
--- a/contrib/pgcrypto/fortuna.c
+++ b/contrib/pgcrypto/fortuna.c
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/fortuna.c,v 1.2 2005/07/11 15:07:59 tgl Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/fortuna.c,v 1.3 2005/07/18 17:09:01 tgl Exp $
  */
 
 #include "postgres.h"
@@ -174,8 +174,8 @@ static void init_state(FState *st)
 }
 
 /*
- * Must not reseed more ofter than RESEED_PER_SEC
- * times per second.
+ * The time between reseed must be at least RESEED_INTERVAL
+ * microseconds.
  */
 static int too_often(FState *st)
 {
@@ -241,7 +241,6 @@ static void reseed(FState *st)
 
 	memset(&key_md, 0, sizeof(key_md));
 	memset(buf, 0, BLOCK);
-	n = k = 0;
 }
 
 /*
diff --git a/contrib/pgcrypto/internal.c b/contrib/pgcrypto/internal.c
index 4dcbb480696..93085dbf6d3 100644
--- a/contrib/pgcrypto/internal.c
+++ b/contrib/pgcrypto/internal.c
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/internal.c,v 1.20 2005/07/11 15:07:59 tgl Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/internal.c,v 1.21 2005/07/18 17:09:01 tgl Exp $
  */
 
 #include "postgres.h"
@@ -127,6 +127,7 @@ int_md5_free(PX_MD * h)
 {
 	MD5_CTX    *ctx = (MD5_CTX *) h->p.ptr;
 
+	memset(ctx, 0, sizeof(*ctx));
 	px_free(ctx);
 	px_free(h);
 }
@@ -174,6 +175,7 @@ int_sha1_free(PX_MD * h)
 {
 	SHA1_CTX   *ctx = (SHA1_CTX *) h->p.ptr;
 
+	memset(ctx, 0, sizeof(*ctx));
 	px_free(ctx);
 	px_free(h);
 }
@@ -221,6 +223,7 @@ int_sha256_free(PX_MD * h)
 {
 	SHA256_CTX   *ctx = (SHA256_CTX *) h->p.ptr;
 
+	memset(ctx, 0, sizeof(*ctx));
 	px_free(ctx);
 	px_free(h);
 }
@@ -267,6 +270,7 @@ int_sha384_free(PX_MD * h)
 {
 	SHA384_CTX   *ctx = (SHA384_CTX *) h->p.ptr;
 
+	memset(ctx, 0, sizeof(*ctx));
 	px_free(ctx);
 	px_free(h);
 }
@@ -314,6 +318,7 @@ int_sha512_free(PX_MD * h)
 {
 	SHA512_CTX   *ctx = (SHA512_CTX *) h->p.ptr;
 
+	memset(ctx, 0, sizeof(*ctx));
 	px_free(ctx);
 	px_free(h);
 }
@@ -326,6 +331,7 @@ init_md5(PX_MD * md)
 	MD5_CTX    *ctx;
 
 	ctx = px_alloc(sizeof(*ctx));
+	memset(ctx, 0, sizeof(*ctx));
 
 	md->p.ptr = ctx;
 
@@ -345,6 +351,7 @@ init_sha1(PX_MD * md)
 	SHA1_CTX   *ctx;
 
 	ctx = px_alloc(sizeof(*ctx));
+	memset(ctx, 0, sizeof(*ctx));
 
 	md->p.ptr = ctx;
 
@@ -364,6 +371,7 @@ init_sha256(PX_MD * md)
 	SHA256_CTX   *ctx;
 
 	ctx = px_alloc(sizeof(*ctx));
+	memset(ctx, 0, sizeof(*ctx));
 
 	md->p.ptr = ctx;
 
@@ -383,6 +391,7 @@ init_sha384(PX_MD * md)
 	SHA384_CTX   *ctx;
 
 	ctx = px_alloc(sizeof(*ctx));
+	memset(ctx, 0, sizeof(*ctx));
 
 	md->p.ptr = ctx;
 
@@ -402,6 +411,7 @@ init_sha512(PX_MD * md)
 	SHA512_CTX   *ctx;
 
 	ctx = px_alloc(sizeof(*ctx));
+	memset(ctx, 0, sizeof(*ctx));
 
 	md->p.ptr = ctx;
 
@@ -829,6 +839,7 @@ static void system_reseed(void)
 		fortuna_add_entropy(SYSTEM_ENTROPY, buf, n);
 
 	seed_time = t;
+	memset(buf, 0, sizeof(buf));
 }
 
 int
diff --git a/contrib/pgcrypto/pgp-compress.c b/contrib/pgcrypto/pgp-compress.c
index f1a41f10a26..da0ba9a18cf 100644
--- a/contrib/pgcrypto/pgp-compress.c
+++ b/contrib/pgcrypto/pgp-compress.c
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/pgp-compress.c,v 1.3 2005/07/18 16:35:06 tgl Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/pgp-compress.c,v 1.4 2005/07/18 17:09:01 tgl Exp $
  */
 
 #include "postgres.h"
@@ -270,7 +270,11 @@ restart:
 	dec->stream.avail_out = dec->buf_len;
 	dec->pos = dec->buf;
 
-	/* Z_NO_FLUSH, Z_SYNC_FLUSH */
+	/*
+	 * Z_SYNC_FLUSH is tell zlib to output as much as possible.
+	 * It should do it anyway (Z_NO_FLUSH), but seems to reserve
+	 * the right not to.  So lets follow the API.
+	 */
 	flush = dec->stream.avail_in ? Z_SYNC_FLUSH : Z_FINISH;
 	res = inflate(&dec->stream, flush);
 	if (res != Z_OK && res != Z_STREAM_END)
diff --git a/contrib/pgcrypto/pgp-decrypt.c b/contrib/pgcrypto/pgp-decrypt.c
index 18173610756..1fc4f4feb0a 100644
--- a/contrib/pgcrypto/pgp-decrypt.c
+++ b/contrib/pgcrypto/pgp-decrypt.c
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/pgp-decrypt.c,v 1.3 2005/07/18 16:35:06 tgl Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/pgp-decrypt.c,v 1.4 2005/07/18 17:09:01 tgl Exp $
  */
 
 #include "postgres.h"
@@ -339,7 +339,6 @@ static void mdc_free(void *priv)
 	ctx->mdc_ctx = NULL;
 }
 
-/* fixme: clarify */
 static int mdc_finish(PGP_Context *ctx, PullFilter *src,
 		int len, uint8 **data_p)
 {
@@ -364,6 +363,7 @@ static int mdc_finish(PGP_Context *ctx, PullFilter *src,
 		return 0;
 	}
 	
+	/* safety check */
 	if (ctx->in_mdc_pkt > 1)
 	{
 		px_debug("mdc_finish: several times here?");
@@ -371,6 +371,7 @@ static int mdc_finish(PGP_Context *ctx, PullFilter *src,
 	}
 	ctx->in_mdc_pkt++;
 	
+	/* is the packet sane? */
 	if (res != 20)
 	{
 		px_debug("mdc_finish: read failed, res=%d", res);
diff --git a/contrib/pgcrypto/pgp.h b/contrib/pgcrypto/pgp.h
index 7f31aa3d732..93a06d46f22 100644
--- a/contrib/pgcrypto/pgp.h
+++ b/contrib/pgcrypto/pgp.h
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/pgp.h,v 1.1 2005/07/10 13:46:29 momjian Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/pgp.h,v 1.2 2005/07/18 17:09:01 tgl Exp $
  */
 
 enum
@@ -238,8 +238,6 @@ unsigned	pgp_armor_dec_len(unsigned len);
 int pgp_compress_filter(PushFilter **res, PGP_Context *ctx, PushFilter *dst);
 int pgp_decompress_filter(PullFilter **res, PGP_Context *ctx, PullFilter *src);
 
-extern void (*pgp_packet_debug) (int tag, uint8 *buf, int len);
-
 int pgp_key_alloc(PGP_PubKey **pk_p);
 void pgp_key_free(PGP_PubKey *pk);
 int _pgp_read_public_key(PullFilter *pkt, PGP_PubKey *pk);
diff --git a/contrib/pgcrypto/random.c b/contrib/pgcrypto/random.c
index 059fad3c8b3..242eb175dab 100644
--- a/contrib/pgcrypto/random.c
+++ b/contrib/pgcrypto/random.c
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $PostgreSQL: pgsql/contrib/pgcrypto/random.c,v 1.14 2005/07/11 19:06:46 tgl Exp $
+ * $PostgreSQL: pgsql/contrib/pgcrypto/random.c,v 1.15 2005/07/18 17:09:01 tgl Exp $
  */
 
 #include "postgres.h"
@@ -44,7 +44,9 @@
  */
 #if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) \
 	|| defined(__NetBSD__) || defined(__DragonFly__) \
-	|| defined(__darwin__) || defined(__SOLARIS__)
+	|| defined(__darwin__) || defined(__SOLARIS__) \
+	|| defined(__hpux) || defined(__HPUX__) \
+	|| defined(__CYGWIN__) || defined(_AIX)
 
 #define TRY_DEV_RANDOM
 
-- 
GitLab