diff options
author | Michael Vetter <jubalh@iodoru.org> | 2021-03-25 16:30:19 +0100 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2021-03-25 16:30:19 +0100 |
commit | b584a1ecd081bda4eb7ea0e3231ca4ca117be581 (patch) | |
tree | 6b66196da71733c59f1305d6f500618d2c29cd59 /src/xmpp/ox.c | |
parent | 10df93ee3e2d85d43bc5b0e4a0c48debc7bae1b4 (diff) | |
download | profani-tty-b584a1ecd081bda4eb7ea0e3231ca4ca117be581.tar.gz |
ox: make _ox_public_key_result safer
Diffstat (limited to 'src/xmpp/ox.c')
-rw-r--r-- | src/xmpp/ox.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/xmpp/ox.c b/src/xmpp/ox.c index c055863e..0f33322c 100644 --- a/src/xmpp/ox.c +++ b/src/xmpp/ox.c @@ -421,13 +421,23 @@ _ox_public_key_result(xmpp_conn_t* const conn, xmpp_stanza_t* const stanza, void log_error("[OX] Public key request response failed: No <pubkey/>"); return FALSE; } + xmpp_stanza_t* data = xmpp_stanza_get_child_by_name(pubkey, STANZA_NAME_DATA); + if (!data) { + log_error("[OX] No data"); + } + char* base64_data = xmpp_stanza_get_text(data); - log_debug("Key data: %s", base64_data); - if (p_ox_gpg_import(base64_data)) { - cons_show("Public Key imported"); - } else { - cons_show("Public Key import failed. Check log for details."); + if (base64_data) { + log_debug("Key data: %s", base64_data); + + if (p_ox_gpg_import(base64_data)) { + cons_show("Public Key imported"); + } else { + cons_show("Public Key import failed. Check log for details."); + } + + free(base64_data); } return FALSE; |