diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c index 2a12fe77..f47b1f48 100644 --- a/src/omemo/omemo.c +++ b/src/omemo/omemo.c @@ -1141,6 +1141,12 @@ omemo_on_message_recv(const char* const from_jid, uint32_t sid, return NULL; } + if (payload == NULL) { + signal_buffer_free(plaintext_key); + *error = OMEMO_ERR_KEY_TRANSPORT; + return NULL; + } + if (signal_buffer_len(plaintext_key) != AES128_GCM_KEY_LENGTH + AES128_GCM_TAG_LENGTH) { log_error("[OMEMO][RECV] invalid key length"); signal_buffer_free(plaintext_key); @@ -1148,12 +1154,6 @@ omemo_on_message_recv(const char* const from_jid, uint32_t sid, return NULL; } - if (payload == NULL) { - signal_buffer_free(plaintext_key); - *error = OMEMO_ERR_KEY_TRANSPORT; - return NULL; - } - size_t plaintext_len = payload_len; plaintext = malloc(plaintext_len + 1); res = aes128gcm_decrypt(plaintext, &plaintext_len, payload, payload_len, iv,