Re: [PATCH 3/7] crypto: testmgr: fix warning

From: Jarod Wilson
Date: Mon Oct 19 2009 - 10:05:16 EST


On 10/19/09 9:58 AM, Jarod Wilson wrote:
On 10/19/09 9:52 AM, Jiri Kosina wrote:
On Mon, 19 Oct 2009, Felipe Contreras wrote:

crypto/testmgr.c: In function ?test_cprng?:
crypto/testmgr.c:1204: warning: ?err? may be used uninitialized in
this function

Signed-off-by: Felipe Contreras<felipe.contreras@xxxxxxxxx>
---
crypto/testmgr.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 6d5b746..1f2357b 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1201,7 +1201,7 @@ static int test_cprng(struct crypto_rng *tfm,
struct cprng_testvec *template,
unsigned int tcount)
{
const char *algo = crypto_tfm_alg_driver_name(crypto_rng_tfm(tfm));
- int err, i, j, seedsize;
+ int err = 0, i, j, seedsize;
u8 *seed;
char result[32];

As it is not obvious to me immediately why/whether tcount couldn't be
zero
(which would cause uninitialized use of 'err'), I am not merging this
through trivial tree. Herbert?

I believe I'm the guilty party who wrote the code in question.
Initializing err to 0 isn't correct. tcount should always be at least 1,
if its 0, test_cprng has been called with invalid parameters. I believe
err would best be initialized to -EINVAL, lest the caller think they
were successful.

...and I need to re-read said code more carefully. tcount is desc->suite.cprng.count, which is ANSI_CPRNG_AES_TEST_VECTORS, which is #define'd to 6, and is the count of how many cprng test vectors there are. If someone changes that to 0, then I guess a retval of 0 would actually be correct, since no tests failed...

So yeah, I rescind my claim that initializing err to 0 is incorrect, I think that's just fine.

--
Jarod Wilson
jarod@xxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/