diff options
author | defanor <defanor@uberspace.net> | 2023-06-09 14:43:15 +0300 |
---|---|---|
committer | defanor <defanor@uberspace.net> | 2023-06-09 14:43:15 +0300 |
commit | 2d4110996bea53a9568b750d00d4dcdcc3907bc6 (patch) | |
tree | c0501e57847a0a9b1b415c17f2a6816a40eae3c2 /src/rexmpp.c | |
parent | 122b13ec955deb718aca280112584b645c9caea0 (diff) |
Avoid direct strdup of values returned by rexmpp_xml_find_attr_val
Better to check those to not be NULL first.
Diffstat (limited to 'src/rexmpp.c')
-rw-r--r-- | src/rexmpp.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/rexmpp.c b/src/rexmpp.c index 80d7cc2..7eede3f 100644 --- a/src/rexmpp.c +++ b/src/rexmpp.c @@ -267,9 +267,9 @@ char *rexmpp_get_name (rexmpp_t *s, const char *jid_str) { if (s->manage_roster) { rexmpp_xml_t *roster_item = rexmpp_roster_find_item(s, jid.bare, NULL); if (roster_item != NULL) { - char *name = strdup(rexmpp_xml_find_attr_val(roster_item, "name")); + const char *name = rexmpp_xml_find_attr_val(roster_item, "name"); if (name != NULL) { - return name; + return strdup(name); } } if (s->track_roster_events) { @@ -1863,7 +1863,11 @@ rexmpp_err_t rexmpp_process_element (rexmpp_t *s, rexmpp_xml_t *elem) { if (s->roster_ver != NULL) { free(s->roster_ver); } - s->roster_ver = strdup(rexmpp_xml_find_attr_val(query, "ver")); + s->roster_ver = NULL; + const char *roster_ver = rexmpp_xml_find_attr_val(query, "ver"); + if (roster_ver != NULL) { + s->roster_ver = strdup(roster_ver); + } rexmpp_modify_roster(s, rexmpp_xml_first_elem_child(query)); /* todo: check for errors */ rexmpp_iq_reply(s, elem, "result", NULL); @@ -2147,7 +2151,11 @@ rexmpp_err_t rexmpp_process_element (rexmpp_t *s, rexmpp_xml_t *elem) { if (s->stream_id != NULL) { free(s->stream_id); } - s->stream_id = strdup(rexmpp_xml_find_attr_val(elem, "id")); + const char *stream_id = rexmpp_xml_find_attr_val(elem, "id"); + s->stream_id = NULL; + if (stream_id != NULL) { + s->stream_id = strdup(stream_id); + } } rexmpp_stream_is_ready(s); } else if (rexmpp_xml_match(elem, "urn:xmpp:sm:3", "failed")) { |