summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2005-07-18 17:09:01 +0000
committerTom Lane2005-07-18 17:09:01 +0000
commit149675b4c2315bd8ae34ec26cbfc095082ccc02c (patch)
tree94298fee4fe705d99ab0e79a1576b56fdc033b3a
parentfa4a8bcff2079138523f5dae87f2d08d08f7f332 (diff)
Small cleanups for pgcrypto. Marko Kreen
-rw-r--r--contrib/pgcrypto/fortuna.c5
-rw-r--r--contrib/pgcrypto/internal.c11
-rw-r--r--contrib/pgcrypto/pgp-compress.c6
-rw-r--r--contrib/pgcrypto/pgp-decrypt.c3
-rw-r--r--contrib/pgcrypto/pgp.h2
-rw-r--r--contrib/pgcrypto/random.c4
6 files changed, 23 insertions, 8 deletions
diff --git a/contrib/pgcrypto/fortuna.c b/contrib/pgcrypto/fortuna.c
index 98bb415ed7..2cf7536643 100644
--- a/contrib/pgcrypto/fortuna.c
+++ b/contrib/pgcrypto/fortuna.c
@@ -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 880793e11d..d6773b3270 100644
--- a/contrib/pgcrypto/internal.c
+++ b/contrib/pgcrypto/internal.c
@@ -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 91d31190a4..55839848ac 100644
--- a/contrib/pgcrypto/pgp-compress.c
+++ b/contrib/pgcrypto/pgp-compress.c
@@ -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 32f0dc279a..c3226d7755 100644
--- a/contrib/pgcrypto/pgp-decrypt.c
+++ b/contrib/pgcrypto/pgp-decrypt.c
@@ -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 72cdc862e9..8c69f91c26 100644
--- a/contrib/pgcrypto/pgp.h
+++ b/contrib/pgcrypto/pgp.h
@@ -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 7ef21cf5c8..6431845f4b 100644
--- a/contrib/pgcrypto/random.c
+++ b/contrib/pgcrypto/random.c
@@ -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