1
0
mirror of https://github.com/profanity-im/profanity.git synced 2025-01-03 14:57:42 -05:00

fixed crash in stanza_create_form when text is NULL

xmpp_stanza_get_text may return NULL.
Also fixed memory leak: xmpp_stanza_get_text returns new allocated
string and it must be freed by xmpp_free().
This commit is contained in:
Dmitry Podgorny 2013-03-12 21:08:50 +02:00
parent c89de12b0f
commit ed2212a0ca
2 changed files with 8 additions and 1 deletions

View File

@ -25,6 +25,8 @@
#include <strophe.h>
#include "resource.h"
xmpp_conn_t *connection_get_conn(void);
xmpp_ctx_t *connection_get_ctx(void);
int connection_error_handler(xmpp_conn_t * const conn,

View File

@ -27,6 +27,7 @@
#include <strophe.h>
#include "common.h"
#include "xmpp/connection.h"
#include "xmpp/stanza.h"
#include "xmpp/capabilities.h"
@ -562,6 +563,7 @@ DataForm *
stanza_create_form(xmpp_stanza_t * const stanza)
{
DataForm *result = NULL;
xmpp_ctx_t *ctx = connection_get_ctx();
xmpp_stanza_t *child = xmpp_stanza_get_children(stanza);
@ -591,7 +593,10 @@ stanza_create_form(xmpp_stanza_t * const stanza)
// handle values
while (value != NULL) {
char *text = xmpp_stanza_get_text(value);
field->values = g_slist_insert_sorted(field->values, strdup(text), (GCompareFunc)octet_compare);
if (text != NULL) {
field->values = g_slist_insert_sorted(field->values, strdup(text), (GCompareFunc)octet_compare);
xmpp_free(ctx, text);
}
value = xmpp_stanza_get_next(value);
}