about summary refs log tree commit diff stats
path: root/src/omemo/store.c
diff options
context:
space:
mode:
authorPaul Fariello <paul@fariello.eu>2019-03-22 00:03:16 +0100
committerPaul Fariello <paul@fariello.eu>2019-04-10 17:12:31 +0200
commit91ee289c773a137c60e98c1e62db41346eb57363 (patch)
treef403efe7df2c83eb233a22a190a44e48e7f07142 /src/omemo/store.c
parentbc541cb8ac6be40a2ee1e38a99de7cf144361a2a (diff)
downloadprofani-tty-91ee289c773a137c60e98c1e62db41346eb57363.tar.gz
Add support for disconnect in OMEMO
Diffstat (limited to 'src/omemo/store.c')
-rw-r--r--src/omemo/store.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/omemo/store.c b/src/omemo/store.c
index 621c902c..4b20d29f 100644
--- a/src/omemo/store.c
+++ b/src/omemo/store.c
@@ -109,7 +109,10 @@ store_session(const signal_protocol_address *address,
 
 
     char *record_b64 = g_base64_encode(record, record_len);
-    g_key_file_set_string(omemo_sessions_keyfile(), address->name, g_strdup_printf("%d", address->device_id), record_b64);
+    char *device_id = g_strdup_printf("%d", address->device_id);
+    g_key_file_set_string(omemo_sessions_keyfile(), address->name, device_id, record_b64);
+    free(device_id);
+    g_free(record_b64);
 
     omemo_sessions_keyfile_save();
 
@@ -283,9 +286,10 @@ save_identity(const signal_protocol_address *address, uint8_t *key_data,
 
     char *key_b64 = g_base64_encode(key_data, key_len);
     g_key_file_set_string(omemo_identity_keyfile(), OMEMO_STORE_GROUP_TRUST, node, key_b64);
+    g_free(key_b64);
 
     omemo_identity_keyfile_save();
-    free(node);
+    g_free(node);
 
     return SG_SUCCESS;
 }
@@ -294,13 +298,19 @@ int
 is_trusted_identity(const signal_protocol_address *address, uint8_t *key_data,
     size_t key_len, void *user_data)
 {
+    int ret;
     identity_key_store_t *identity_key_store = (identity_key_store_t *)user_data;
     char *node = g_strdup_printf("%s:%d", address->name, address->device_id);
 
     signal_buffer *buffer = signal_buffer_create(key_data, key_len);
     signal_buffer *original = g_hash_table_lookup(identity_key_store->trusted, node);
+    g_free(node);
 
-    return original != NULL && signal_buffer_compare(buffer, original) == 0;
+    ret = original != NULL && signal_buffer_compare(buffer, original) == 0;
+
+    signal_buffer_free(buffer);
+
+    return ret;
 }
 
 int