about summary refs log tree commit diff stats
path: root/src/otr/otr.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-08-20 22:23:31 +0100
committerJames Booth <boothj5@gmail.com>2015-08-20 22:23:31 +0100
commitd791e4dd597ecaacf3864e4af4f60953ba24467f (patch)
treecea0a4710ae87cce1ccc58d8a002ba350427084c /src/otr/otr.c
parentc18b7f4d67a4b5e2cd026b47f9d51dae74427c1d (diff)
downloadprofani-tty-d791e4dd597ecaacf3864e4af4f60953ba24467f.tar.gz
Free OTR TLVS
Diffstat (limited to 'src/otr/otr.c')
-rw-r--r--src/otr/otr.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/otr/otr.c b/src/otr/otr.c
index a7790bcb..53433642 100644
--- a/src/otr/otr.c
+++ b/src/otr/otr.c
@@ -708,6 +708,14 @@ otr_encrypt_message(const char * const to, const char * const message)
     }
 }
 
+static void
+_otr_tlv_free(OtrlTLV *tlvs)
+{
+    if (tlvs) {
+        otrl_tlv_free(tlvs);
+    }
+}
+
 char *
 otr_decrypt_message(const char * const from, const char * const message, gboolean *was_decrypted)
 {
@@ -723,7 +731,6 @@ otr_decrypt_message(const char * const from, const char * const message, gboolea
         // common tlv handling
         OtrlTLV *tlv = otrl_tlv_find(tlvs, OTRL_TLV_DISCONNECTED);
         if (tlv) {
-
             if (context) {
                 otrl_context_force_plaintext(context);
                 ui_gone_insecure(from);
@@ -732,16 +739,19 @@ otr_decrypt_message(const char * const from, const char * const message, gboolea
 
         // library version specific tlv handling
         otrlib_handle_tlvs(user_state, &ops, context, tlvs, smp_initiators);
+        _otr_tlv_free(tlvs);
 
         return NULL;
 
     // message was decrypted, return to user
     } else if (decrypted) {
+        _otr_tlv_free(tlvs);
         *was_decrypted = TRUE;
         return decrypted;
 
     // normal non OTR message
     } else {
+        _otr_tlv_free(tlvs);
         *was_decrypted = FALSE;
         return strdup(message);
     }