about summary refs log tree commit diff stats
path: root/src/xmpp/omemo.c
diff options
context:
space:
mode:
authorSven Speckmaier <sps@ipunkt.biz>2020-01-01 20:12:26 +0100
committerSven Speckmaier <sps@ipunkt.biz>2020-01-03 10:39:40 +0100
commit5ccd04c91bbc4ed4e32fdc4513c1a7a58918e513 (patch)
tree4ac89e0d3bbcc3fbe365b9c80a7a34f6fafa61c8 /src/xmpp/omemo.c
parent5d7f2d1516d7d2c8faa9d4f5c6cacac6092e64bb (diff)
downloadprofani-tty-5ccd04c91bbc4ed4e32fdc4513c1a7a58918e513.tar.gz
omemo: Check for `1` alongside `true` in an omemo encrypted message stanza
prekey is defined as `<xs:attribute name="prekey" type="xs:boolean"/>`
which allows both `true` and `1` as truthy values.
Not checking for `1` breaks omemo encryption when interacting with
clients which set prekey="1", example: psi+ 1.4.983
Regards https://github.com/profanity-im/profanity/issues/1247
Diffstat (limited to 'src/xmpp/omemo.c')
-rw-r--r--src/xmpp/omemo.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/xmpp/omemo.c b/src/xmpp/omemo.c
index 22935c0d..ba373c4f 100644
--- a/src/xmpp/omemo.c
+++ b/src/xmpp/omemo.c
@@ -359,7 +359,9 @@ omemo_receive_message(xmpp_stanza_t *const stanza, gboolean *trusted)
 
         key->data = g_base64_decode(key_text, &key->length);
         free(key_text);
-        key->prekey = g_strcmp0(xmpp_stanza_get_attribute(key_stanza, "prekey"), "true") == 0;
+        key->prekey = 
+            g_strcmp0(xmpp_stanza_get_attribute(key_stanza, "prekey"), "true") == 0
+            || g_strcmp0(xmpp_stanza_get_attribute(key_stanza, "prekey"), "1") == 0;
         keys = g_list_append(keys, key);
         continue;