fix a length check and add some missing length checks
This commit is contained in:
parent
6d86835421
commit
ddc981c475
1 changed files with 9 additions and 2 deletions
|
@ -70,8 +70,9 @@ size_t aes_sha_256_cipher_encrypt(
|
||||||
) {
|
) {
|
||||||
auto *c = reinterpret_cast<const _olm_cipher_aes_sha_256 *>(cipher);
|
auto *c = reinterpret_cast<const _olm_cipher_aes_sha_256 *>(cipher);
|
||||||
|
|
||||||
if (aes_sha_256_cipher_encrypt_ciphertext_length(cipher, plaintext_length)
|
if (ciphertext_length
|
||||||
< ciphertext_length) {
|
< aes_sha_256_cipher_encrypt_ciphertext_length(cipher, plaintext_length)
|
||||||
|
|| output_length < MAC_LENGTH) {
|
||||||
return std::size_t(-1);
|
return std::size_t(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,6 +110,12 @@ size_t aes_sha_256_cipher_decrypt(
|
||||||
uint8_t const * ciphertext, size_t ciphertext_length,
|
uint8_t const * ciphertext, size_t ciphertext_length,
|
||||||
uint8_t * plaintext, size_t max_plaintext_length
|
uint8_t * plaintext, size_t max_plaintext_length
|
||||||
) {
|
) {
|
||||||
|
if (max_plaintext_length
|
||||||
|
< aes_sha_256_cipher_decrypt_max_plaintext_length(cipher, ciphertext_length)
|
||||||
|
|| input_length < MAC_LENGTH) {
|
||||||
|
return std::size_t(-1);
|
||||||
|
}
|
||||||
|
|
||||||
auto *c = reinterpret_cast<const _olm_cipher_aes_sha_256 *>(cipher);
|
auto *c = reinterpret_cast<const _olm_cipher_aes_sha_256 *>(cipher);
|
||||||
|
|
||||||
DerivedKeys keys;
|
DerivedKeys keys;
|
||||||
|
|
Loading…
Reference in a new issue