diff options
Diffstat (limited to 'src/rexmpp_openpgp.c')
-rw-r--r-- | src/rexmpp_openpgp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/rexmpp_openpgp.c b/src/rexmpp_openpgp.c index 908e66d..b7bb493 100644 --- a/src/rexmpp_openpgp.c +++ b/src/rexmpp_openpgp.c @@ -60,12 +60,13 @@ void rexmpp_pgp_fp_reply (rexmpp_t *s, rexmpp_log(s, LOG_ERR, "OpenPGP key retrieval: no data in pubkey"); return; } - char *key_base64 = xmlNodeGetContent(data); char *key_raw = NULL; size_t key_raw_len = 0; + char *key_base64 = xmlNodeGetContent(data); int sasl_err = gsasl_base64_from(key_base64, strlen(key_base64), &key_raw, &key_raw_len); + free(key_base64); if (sasl_err != GSASL_OK) { rexmpp_log(s, LOG_ERR, "Base-64 key decoding failure: %s", gsasl_strerror(sasl_err)); @@ -374,8 +375,10 @@ rexmpp_openpgp_decrypt_verify_message (rexmpp_t *s, rexmpp_log(s, LOG_ERR, "No 'openpgp' child element"); return NULL; } + char *cipher_str = xmlNodeGetContent(openpgp); xmlNodePtr plain = - rexmpp_openpgp_decrypt_verify(s, xmlNodeGetContent(openpgp)); + rexmpp_openpgp_decrypt_verify(s, cipher_str); + free(cipher_str); if (plain == NULL) { return NULL; } @@ -523,7 +526,7 @@ rexmpp_openpgp_decrypt_verify (rexmpp_t *s, } void rexmpp_openpgp_add_keys (rexmpp_t *s, - char *jid, + const char *jid, gpgme_key_t **keys, int *nkeys, int *allocated) @@ -559,7 +562,7 @@ void rexmpp_openpgp_add_keys (rexmpp_t *s, char *rexmpp_openpgp_encrypt_sign (rexmpp_t *s, xmlNodePtr payload, - char **recipients) + const char **recipients) { gpgme_error_t err; int sasl_err; |