linux/crypto
Herbert Xu a8348bca29 crypto: algif_hash - Fix NULL hash crash with shash
Recently algif_hash has been changed to allow null hashes.  This
triggers a bug when used with an shash algorithm whereby it will
cause a crash during the digest operation.

This patch fixes it by avoiding the digest operation and instead
doing an init followed by a final which avoids the buggy code in
shash.

This patch also ensures that the result buffer is freed after an
error so that it is not returned as a genuine hash result on the
next recv call.

The shash/ahash wrapper code will be fixed later to handle this
case correctly.

Fixes: 493b2ed3f7 ("crypto: algif_hash - Handle NULL hashes correctly")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Tested-by: Laura Abbott <labbott@redhat.com>
2016-11-18 22:34:10 +08:00
..
asymmetric_keys KEYS: Fix for erroneous trust of incorrectly signed X.509 certs 2016-07-18 12:19:47 +10:00
async_tx async_pq_val: fix DMA memory leak 2016-10-05 06:18:09 +05:30
.gitignore
842.c
ablk_helper.c crypto: ablk_helper - Fix cryptd reordering 2016-06-23 18:29:53 +08:00
ablkcipher.c crypto: skcipher - Remove top-level givcipher interface 2016-07-18 17:35:46 +08:00
aead.c crypto: aead - Remove blkcipher null for IV generators 2016-07-18 17:35:43 +08:00
aes_generic.c
af_alg.c
ahash.c crypto: ahash - Add padding in crypto_ahash_extsize 2016-07-01 23:45:03 +08:00
akcipher.c
algapi.c crypto: api - Add crypto_inst_setname 2016-07-01 23:45:11 +08:00
algboss.c
algif_aead.c
algif_hash.c crypto: algif_hash - Fix NULL hash crash with shash 2016-11-18 22:34:10 +08:00
algif_rng.c
algif_skcipher.c
ansi_cprng.c
anubis.c
api.c
arc4.c
authenc.c crypto: authenc - Use skcipher 2016-07-18 17:35:38 +08:00
authencesn.c crypto: authencesn - Use skcipher 2016-07-18 17:35:39 +08:00
blkcipher.c crypto: skcipher - Fix blkcipher walk OOM crash 2016-09-13 18:44:57 +08:00
blowfish_common.c
blowfish_generic.c
camellia_generic.c
cast5_generic.c
cast6_generic.c
cast_common.c
cbc.c
ccm.c crypto: ccm - Use skcipher 2016-07-18 17:35:40 +08:00
chacha20_generic.c random: replace non-blocking pool with a Chacha20-based CRNG 2016-07-03 00:57:23 -04:00
chacha20poly1305.c crypto: chacha20poly1305 - Use skcipher 2016-07-18 17:35:41 +08:00
cipher.c
cmac.c
compress.c
crc32_generic.c
crc32c_generic.c
crct10dif_common.c
crct10dif_generic.c crypto: squash lines for simple wrapper functions 2016-09-13 20:27:26 +08:00
cryptd.c crypto: cryptd - initialize child shash_desc on import 2016-09-07 21:04:36 +08:00
crypto_engine.c kthread: kthread worker API cleanup 2016-10-11 15:06:33 -07:00
crypto_null.c crypto: null - Remove default null blkcipher 2016-07-18 17:35:44 +08:00
crypto_user.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2016-07-21 12:26:55 +08:00
crypto_wq.c
ctr.c crypto: ctr - Use skcipher in rfc3686 2016-07-18 17:35:39 +08:00
cts.c crypto: cts - Convert to skcipher 2016-07-18 17:35:44 +08:00
deflate.c
des_generic.c
dh_helper.c crypto: dh - Add DH software implementation 2016-06-23 18:29:56 +08:00
dh.c crypto: rsa - Generate fixed-length output 2016-07-01 23:45:18 +08:00
drbg.c crypto: drbg - fix error return code 2016-08-24 21:04:49 +08:00
ecb.c
ecc_curve_defs.h crypto: ecdh - Add ECDH software support 2016-06-23 18:29:57 +08:00
ecc.c crypto: ecdh - make ecdh_shared_secret unique 2016-06-24 21:24:59 +08:00
ecc.h crypto: ecdh - make ecdh_shared_secret unique 2016-06-24 21:24:59 +08:00
ecdh_helper.c crypto: ecdh - Add ECDH software support 2016-06-23 18:29:57 +08:00
ecdh.c crypto: ecdh - make ecdh_shared_secret unique 2016-06-24 21:24:59 +08:00
echainiv.c crypto: echainiv - Replace chaining with multiplication 2016-09-13 18:44:57 +08:00
fcrypt.c
fips.c
gcm.c crypto: gcm - Fix IV buffer size in crypto_gcm_setkey 2016-10-02 22:31:52 +08:00
gf128mul.c
ghash-generic.c crypto: ghash-generic - move common definitions to a new header file 2016-10-02 22:26:40 +08:00
hash_info.c
hmac.c
internal.h
jitterentropy-kcapi.c crypto: jitterentropy - use ktime_get_ns as fallback 2016-06-24 21:24:58 +08:00
jitterentropy.c
Kconfig crypto: powerpc - CRYPT_CRC32C_VPMSUM should depend on ALTIVEC 2016-08-09 18:25:09 +08:00
keywrap.c
khazad.c
kpp.c crypto: kpp - Key-agreement Protocol Primitives API (KPP) 2016-06-23 18:29:56 +08:00
lrw.c
lz4.c
lz4hc.c
lzo.c
Makefile crypto: skcipher - Remove top-level givcipher interface 2016-07-18 17:35:46 +08:00
mcryptd.c crypto: squash lines for simple wrapper functions 2016-09-13 20:27:26 +08:00
md4.c
md5.c
memneq.c
michael_mic.c
pcbc.c
pcrypt.c
poly1305_generic.c
proc.c
ripemd.h
rmd128.c
rmd160.c
rmd256.c
rmd320.c
rng.c
rsa_helper.c crypto: rsa - allow keys >= 2048 bits in FIPS mode 2016-08-24 21:07:10 +08:00
rsa-pkcs1pad.c crypto: rsa-pkcs1pad - Handle leading zero for decryption 2016-09-22 17:42:08 +08:00
rsa.c crypto: rsa - Generate fixed-length output 2016-07-01 23:45:18 +08:00
rsaprivkey.asn1 crypto: rsa - Store rest of the private key components 2016-07-05 23:05:26 +08:00
rsapubkey.asn1
salsa20_generic.c
scatterwalk.c crypto: scatterwalk - Inline start/map/done 2016-07-18 17:35:50 +08:00
seed.c
seqiv.c crypto: skcipher - Remove top-level givcipher interface 2016-07-18 17:35:46 +08:00
serpent_generic.c
sha1_generic.c
sha3_generic.c crypto: sha3 - Add missing ULL suffixes for 64-bit constants 2016-08-08 23:43:46 +08:00
sha256_generic.c
sha512_generic.c
shash.c
skcipher.c crypto: skcipher - Remove top-level givcipher interface 2016-07-18 17:35:46 +08:00
tcrypt.c crypto: sha3 - Add HMAC-SHA3 test modes and test vectors 2016-07-01 23:45:24 +08:00
tcrypt.h
tea.c
testmgr.c crypto: testmgr - add guard to dst buffer for ahash_export 2016-10-02 22:33:43 +08:00
testmgr.h crypto: FIPS - allow tests to be disabled in FIPS mode 2016-08-31 23:21:25 +08:00
tgr192.c
twofish_common.c
twofish_generic.c
vmac.c
wp512.c
xcbc.c
xor.c crypto: xor - Fix warning when XOR_SELECT_TEMPLATE is unset 2016-08-31 23:00:48 +08:00
xts.c crypto: xts - fix a little typo 2016-08-16 17:16:49 +08:00