From 9e56c99e1adda3717eace86f9baae423e4d58196 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Mon, 12 Sep 2011 12:56:20 +0000 Subject: [PATCH] Check we recognise DRBG type in fips_drbgvs.c initialised DRBG_CTX if we don't set type in FIPS_drbg_new(). --- fips/rand/fips_drbg_lib.c | 6 ++++++ fips/rand/fips_drbgvs.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/fips/rand/fips_drbg_lib.c b/fips/rand/fips_drbg_lib.c index 114f78e6ab..ddbb99df66 100644 --- a/fips/rand/fips_drbg_lib.c +++ b/fips/rand/fips_drbg_lib.c @@ -115,8 +115,14 @@ DRBG_CTX *FIPS_drbg_new(int type, unsigned int flags) FIPSerr(FIPS_F_FIPS_DRBG_NEW, ERR_R_MALLOC_FAILURE); return NULL; } + if (type == 0) + { + memset(dctx, 0, sizeof(DRBG_CTX)); + dctx->type = 0; + dctx->status = DRBG_STATUS_UNINITIALISED; return dctx; + } if (FIPS_drbg_init(dctx, type, flags) <= 0) { diff --git a/fips/rand/fips_drbgvs.c b/fips/rand/fips_drbgvs.c index db05d40484..4d84884e36 100644 --- a/fips/rand/fips_drbgvs.c +++ b/fips/rand/fips_drbgvs.c @@ -314,6 +314,11 @@ int main(int argc,char **argv) if (!strcmp(keyword, "PersonalizationString")) { pers = hex2bin_m(value, &perslen); + if (nid == 0) + { + fprintf(stderr, "DRBG type not recognised!\n"); + exit (1); + } dctx = FIPS_drbg_new(nid, df | DRBG_FLAG_TEST); if (!dctx) exit (1); -- GitLab