diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-03-13 00:03:02 -0400 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-03-13 00:03:02 -0400 |
commit | 04bc0096cc4afd36c30eb5639428f7c398618847 (patch) | |
tree | d6cd4b1890b7c1f066af628ebea22b155684f3a6 | |
parent | ce009123926db6ee76341597673377afd7c2c101 (diff) | |
download | pidgin-04bc0096cc4afd36c30eb5639428f7c398618847.tar.gz |
Fix some possible use-after-free.
Some of these are "false" positives since they are only comparing
pointers, but it's also technically undefined behaviour.
-rw-r--r-- | libpurple/protocols/bonjour/mdns_common.c | 2 | ||||
-rw-r--r-- | libpurple/protocols/novell/nmuser.c | 2 | ||||
-rw-r--r-- | libpurple/protocols/sametime/sametime.c | 2 | ||||
-rw-r--r-- | libpurple/protocols/zephyr/zephyr.c | 2 | ||||
-rw-r--r-- | libpurple/util.c | 2 |
5 files changed, 4 insertions, 6 deletions
diff --git a/libpurple/protocols/bonjour/mdns_common.c b/libpurple/protocols/bonjour/mdns_common.c index ec9830c2a9..f19b2b955f 100644 --- a/libpurple/protocols/bonjour/mdns_common.c +++ b/libpurple/protocols/bonjour/mdns_common.c @@ -142,7 +142,7 @@ static void free_presence_txt_records(GSList *lst) { g_free(kvp->key); g_free(kvp->value); g_free(kvp); - lst = g_slist_remove(lst, lst->data); + lst = g_slist_delete_link(lst, lst); } } diff --git a/libpurple/protocols/novell/nmuser.c b/libpurple/protocols/novell/nmuser.c index 1452c4b67a..8255addb3c 100644 --- a/libpurple/protocols/novell/nmuser.c +++ b/libpurple/protocols/novell/nmuser.c @@ -1524,7 +1524,7 @@ _handle_multiple_get_details_joinconf_cb(NMUser * user, NMERR_T ret_code, if (nm_utf8_str_equal(nm_user_record_get_dn(user_record), (const char *) node->data)) { g_free(node->data); - list = g_slist_remove(list, node->data); + list = g_slist_delete_link(list, node); nm_request_set_user_define(request, list); break; } diff --git a/libpurple/protocols/sametime/sametime.c b/libpurple/protocols/sametime/sametime.c index 6eed304edb..f54e1df491 100644 --- a/libpurple/protocols/sametime/sametime.c +++ b/libpurple/protocols/sametime/sametime.c @@ -1646,7 +1646,6 @@ static void mw_session_setPrivacyInfo(struct mwSession *session) { if (privacy->deny) { while ((list = purple_account_privacy_get_denied(acct))) { - g_free(list->data); purple_account_privacy_deny_remove(acct, list->data, TRUE); } while (count--) { @@ -1655,7 +1654,6 @@ static void mw_session_setPrivacyInfo(struct mwSession *session) { } } else { while ((list = purple_account_privacy_get_permitted(acct))) { - g_free(list->data); purple_account_privacy_permit_remove(acct, list->data, TRUE); } while (count--) { diff --git a/libpurple/protocols/zephyr/zephyr.c b/libpurple/protocols/zephyr/zephyr.c index 905831a68c..c5df24de54 100644 --- a/libpurple/protocols/zephyr/zephyr.c +++ b/libpurple/protocols/zephyr/zephyr.c @@ -743,7 +743,7 @@ static gboolean pending_zloc(zephyr_account *zephyr, const char *who) char* normalized_who = local_zephyr_normalize(zephyr,who); if (!g_ascii_strcasecmp(normalized_who, (char *)curr->data)) { g_free((char *)curr->data); - zephyr->pending_zloc_names = g_list_remove(zephyr->pending_zloc_names, curr->data); + zephyr->pending_zloc_names = g_list_delete_link(zephyr->pending_zloc_names, curr); return TRUE; } } diff --git a/libpurple/util.c b/libpurple/util.c index d60ca6e2a8..2667612762 100644 --- a/libpurple/util.c +++ b/libpurple/util.c @@ -1868,7 +1868,7 @@ purple_markup_html_to_xhtml(const char *html, char **xhtml_out, g_free(pt); } g_free(tag->data); - tags = g_list_remove(tags, tag->data); + tags = g_list_delete_link(tags, tag); } else { /* a closing tag we weren't expecting... * we'll let it slide, if it's really a tag...if it's |