diff options
author | Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> | 2008-11-28 07:51:28 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2008-12-24 19:02:04 -0500 |
commit | b812eb0076235743872b5c9d18714d2324cc668d (patch) | |
tree | 77fb3008160e5fedd67464c2656506f81d21da48 /crypto | |
parent | dad3df2044b78ba68a92bf78e38a408bab80ff61 (diff) |
crypto: testmgr - Validate output length in (de)compression tests
When self-testing (de)compression algorithms, make sure the actual size of
the (de)compressed output data matches the expected output size.
Otherwise, in case the actual output size would be smaller than the expected
output size, the subsequent buffer compare test would still succeed, and no
error would be reported.
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/testmgr.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c index 67ff4aaa3c9c..a75f11ffb957 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c | |||
@@ -843,6 +843,14 @@ static int test_comp(struct crypto_comp *tfm, struct comp_testvec *ctemplate, | |||
843 | goto out; | 843 | goto out; |
844 | } | 844 | } |
845 | 845 | ||
846 | if (dlen != ctemplate[i].outlen) { | ||
847 | printk(KERN_ERR "alg: comp: Compression test %d " | ||
848 | "failed for %s: output len = %d\n", i + 1, algo, | ||
849 | dlen); | ||
850 | ret = -EINVAL; | ||
851 | goto out; | ||
852 | } | ||
853 | |||
846 | if (memcmp(result, ctemplate[i].output, dlen)) { | 854 | if (memcmp(result, ctemplate[i].output, dlen)) { |
847 | printk(KERN_ERR "alg: comp: Compression test %d " | 855 | printk(KERN_ERR "alg: comp: Compression test %d " |
848 | "failed for %s\n", i + 1, algo); | 856 | "failed for %s\n", i + 1, algo); |
@@ -867,6 +875,14 @@ static int test_comp(struct crypto_comp *tfm, struct comp_testvec *ctemplate, | |||
867 | goto out; | 875 | goto out; |
868 | } | 876 | } |
869 | 877 | ||
878 | if (dlen != dtemplate[i].outlen) { | ||
879 | printk(KERN_ERR "alg: comp: Decompression test %d " | ||
880 | "failed for %s: output len = %d\n", i + 1, algo, | ||
881 | dlen); | ||
882 | ret = -EINVAL; | ||
883 | goto out; | ||
884 | } | ||
885 | |||
870 | if (memcmp(result, dtemplate[i].output, dlen)) { | 886 | if (memcmp(result, dtemplate[i].output, dlen)) { |
871 | printk(KERN_ERR "alg: comp: Decompression test %d " | 887 | printk(KERN_ERR "alg: comp: Decompression test %d " |
872 | "failed for %s\n", i + 1, algo); | 888 | "failed for %s\n", i + 1, algo); |