crypto: aead - Avoid infinite loop when nivaead fails selftest
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 18 Feb 2009 12:41:47 +0000 (20:41 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 18 Feb 2009 13:21:24 +0000 (21:21 +0800)
commit5852ae42424e3ddba2d3bdf594f72189497f17ee
tree65891326e9baa2d67b04650ee9f0372336fe7cf1
parentb170a137f467ea951c3f256da1b911545acf3ffd
crypto: aead - Avoid infinite loop when nivaead fails selftest

When an aead constructed through crypto_nivaead_default fails
its selftest, we'll loop forever trying to construct new aead
objects but failing because it already exists.

The crux of the issue is that once an aead fails the selftest,
we'll ignore it on the next run through crypto_aead_lookup and
attempt to construct a new aead.

We should instead return an error to the caller if we find an
an that has failed the test.

This bug hasn't manifested itself yet because we don't have any
test vectors for the existing nivaead algorithms.  They're tested
through the underlying algorithms only.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/aead.c