crypto: omap-aes-gcm - check length of assocdata in RFC4106 mode
RFC4106 requires the associated data to be a certain size, so reject inputs that are wrong. This also prevents crashes or other problems due to assoclen becoming negative after subtracting 8 bytes. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Tero Kristo <t-kristo@ti.com> Tested-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
12adf9d63e
commit
b877ad1a13
|
@ -365,7 +365,8 @@ int omap_aes_4106gcm_encrypt(struct aead_request *req)
|
|||
|
||||
memcpy(rctx->iv, ctx->nonce, 4);
|
||||
memcpy(rctx->iv + 4, req->iv, 8);
|
||||
return omap_aes_gcm_crypt(req, FLAGS_ENCRYPT | FLAGS_GCM |
|
||||
return crypto_ipsec_check_assoclen(req->assoclen) ?:
|
||||
omap_aes_gcm_crypt(req, FLAGS_ENCRYPT | FLAGS_GCM |
|
||||
FLAGS_RFC4106_GCM);
|
||||
}
|
||||
|
||||
|
@ -376,7 +377,8 @@ int omap_aes_4106gcm_decrypt(struct aead_request *req)
|
|||
|
||||
memcpy(rctx->iv, ctx->nonce, 4);
|
||||
memcpy(rctx->iv + 4, req->iv, 8);
|
||||
return omap_aes_gcm_crypt(req, FLAGS_GCM | FLAGS_RFC4106_GCM);
|
||||
return crypto_ipsec_check_assoclen(req->assoclen) ?:
|
||||
omap_aes_gcm_crypt(req, FLAGS_GCM | FLAGS_RFC4106_GCM);
|
||||
}
|
||||
|
||||
int omap_aes_gcm_setkey(struct crypto_aead *tfm, const u8 *key,
|
||||
|
|
Loading…
Reference in New Issue