From 62d1063560b841d06a2243598ef1c38c58a6d879 Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Thu, 5 May 2022 16:21:38 +0200 Subject: [PATCH] prevent memory leak in `xmpp_stanza_new_from_string()` Only remember the first stanza in case the string contains multiple stanzas. Signed-off-by: Steffen Jaeckel --- src/stanza.c | 7 +++++-- tests/test_stanza.c | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/stanza.c b/src/stanza.c index 24e6fe8..9593cc7 100644 --- a/src/stanza.c +++ b/src/stanza.c @@ -1640,8 +1640,11 @@ static void _stub_stream_end(char *name, void *userdata) static void _stream_stanza(xmpp_stanza_t *stanza, void *userdata) { - stanza = xmpp_stanza_clone(stanza); - *(xmpp_stanza_t **)userdata = stanza; + xmpp_stanza_t **dest = userdata; + if (*dest == NULL) { + stanza = xmpp_stanza_clone(stanza); + *dest = stanza; + } } /** Create a stanza object from the string. diff --git a/tests/test_stanza.c b/tests/test_stanza.c index f8a758e..219f4fc 100644 --- a/tests/test_stanza.c +++ b/tests/test_stanza.c @@ -99,7 +99,7 @@ static void test_stanza_from_string(xmpp_ctx_t *ctx) size_t buflen; int ret; - static const char *str = + const char *str = "