Fix possible leaks in omemo_receive_message()

At that point we might have allocated memory that should be freed.
This commit is contained in:
Michael Vetter
2024-06-19 11:46:50 +02:00
parent b04650fb1c
commit d341705a43

View File

@@ -391,16 +391,16 @@ omemo_receive_message(xmpp_stanza_t* const stanza, gboolean* trusted)
xmpp_stanza_t* payload = xmpp_stanza_get_child_by_name(encrypted, "payload"); xmpp_stanza_t* payload = xmpp_stanza_get_child_by_name(encrypted, "payload");
if (!payload) { if (!payload) {
return NULL; goto quit;
} }
payload_text = xmpp_stanza_get_text(payload); payload_text = xmpp_stanza_get_text(payload);
if (!payload_text) { if (!payload_text) {
return NULL; goto quit;
} }
size_t payload_len; size_t payload_len;
payload_raw = g_base64_decode(payload_text, &payload_len); payload_raw = g_base64_decode(payload_text, &payload_len);
if (!payload_raw) { if (!payload_raw) {
return NULL; goto quit;
} }
xmpp_stanza_t* key_stanza; xmpp_stanza_t* key_stanza;
@@ -444,6 +444,7 @@ omemo_receive_message(xmpp_stanza_t* const stanza, gboolean* trusted)
g_list_free_full(keys, (GDestroyNotify)omemo_key_free); g_list_free_full(keys, (GDestroyNotify)omemo_key_free);
} }
quit:
g_free(iv_raw); g_free(iv_raw);
g_free(payload_raw); g_free(payload_raw);
g_free(iv_text); g_free(iv_text);