diff options
author | Sven Speckmaier <sps@ipunkt.biz> | 2020-01-01 20:12:26 +0100 |
---|---|---|
committer | Sven Speckmaier <sps@ipunkt.biz> | 2020-01-03 10:39:40 +0100 |
commit | 5ccd04c91bbc4ed4e32fdc4513c1a7a58918e513 (patch) | |
tree | 4ac89e0d3bbcc3fbe365b9c80a7a34f6fafa61c8 /src/xmpp/omemo.c | |
parent | 5d7f2d1516d7d2c8faa9d4f5c6cacac6092e64bb (diff) | |
download | profani-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.c | 4 |
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; |