From 0c7233769665f03e9f91342770dba7279f928c23 Mon Sep 17 00:00:00 2001
From: Stephan Mueller <smuel...@chronox.de>
Date: Tue, 10 Mar 2015 17:00:36 +0100
Subject: [PATCH] crypto: testmgr - fix RNG return code enforcement

Due to the change to RNGs to always return zero in success case, the
invocation of the RNGs in the test manager must be updated as otherwise
the RNG self tests are not properly executed any more.

Signed-off-by: Stephan Mueller <smuel...@chronox.de>
Signed-off-by: Alexander Bergmann <abergm...@suse.com>
---
 crypto/testmgr.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index f4ed6d4..1f879ad 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1474,11 +1474,11 @@ static int test_cprng(struct crypto_rng *tfm, struct 
cprng_testvec *template,
                for (j = 0; j < template[i].loops; j++) {
                        err = crypto_rng_get_bytes(tfm, result,
                                                   template[i].rlen);
-                       if (err != template[i].rlen) {
+                       if (err < 0) {
                                printk(KERN_ERR "alg: cprng: Failed to obtain "
                                       "the correct amount of random data for "
-                                      "%s (requested %d, got %d)\n", algo,
-                                      template[i].rlen, err);
+                                      "%s (requested %d)\n", algo,
+                                      template[i].rlen);
                                goto out;
                        }
                }
@@ -1759,7 +1759,7 @@ static int drbg_cavs_test(struct drbg_testvec *test, int 
pr,
                ret = crypto_drbg_get_bytes_addtl(drng,
                        buf, test->expectedlen, &addtl);
        }
-       if (ret <= 0) {
+       if (ret < 0) {
                printk(KERN_ERR "alg: drbg: could not obtain random data for "
                       "driver %s\n", driver);
                goto outbuf;
@@ -1774,7 +1774,7 @@ static int drbg_cavs_test(struct drbg_testvec *test, int 
pr,
                ret = crypto_drbg_get_bytes_addtl(drng,
                        buf, test->expectedlen, &addtl);
        }
-       if (ret <= 0) {
+       if (ret < 0) {
                printk(KERN_ERR "alg: drbg: could not obtain random data for "
                       "driver %s\n", driver);
                goto outbuf;
-- 
1.8.1.4

-- 
Alexander Bergmann <abergm...@suse.com>, Security Engineer,
SUSE Linux GmbH,
GF: Felix Imendörffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu,
Graham Norton, HRB 21284 (AG Nürnberg)

Attachment: signature.asc
Description: Digital signature

Reply via email to