pidgin/pidgin

Fix some ggp_xml stuff

2020-08-22, Elliott Sales de Andrade
eae11ccb1bef
Parents 974dbfd7e52f
Children c4269b37a13a
Fix some ggp_xml stuff

Fix const-ness of ggp_xml functions.
Fix some leaks in GG XML string usage.

Testing Done:
Compile only.

Reviewed at https://reviews.imfreedom.org/r/84/
--- a/libpurple/protocols/gg/oauth/oauth-purple.c Sat Aug 22 04:03:26 2020 -0500
+++ b/libpurple/protocols/gg/oauth/oauth-purple.c Sat Aug 22 13:03:30 2020 -0500
@@ -63,7 +63,7 @@
gpointer user_data)
{
ggp_oauth_data *data = user_data;
- gchar *token, *token_secret;
+ gchar *token = NULL, *token_secret = NULL;
PurpleXmlNode *xml;
gboolean succ = TRUE;
@@ -81,6 +81,8 @@
if (!succ || strlen(token) < 10) {
purple_debug_error("gg", "ggp_oauth_access_token_got: invalid xml - "
"token is not present");
+ g_free(token);
+ g_free(token_secret);
ggp_oauth_data_free(data);
return;
}
--- a/libpurple/protocols/gg/pubdir-prpl.c Sat Aug 22 04:03:26 2020 -0500
+++ b/libpurple/protocols/gg/pubdir-prpl.c Sat Aug 22 13:03:30 2020 -0500
@@ -261,7 +261,8 @@
record->age, g_date_time_to_unix(record->birth));
}
- g_free(city);
+ g_clear_pointer(&city, g_free);
+ g_clear_pointer(&birth_s, g_free);
xml = purple_xmlnode_get_next_twin(xml);
}
--- a/libpurple/protocols/gg/roster.c Sat Aug 22 04:03:26 2020 -0500
+++ b/libpurple/protocols/gg/roster.c Sat Aug 22 13:03:30 2020 -0500
@@ -798,7 +798,8 @@
PurpleBuddy *buddy;
PurpleXmlNode *buddy_node, *contact_groups;
gboolean succ = TRUE;
- const char *group_id;
+ const gchar *group_id;
+ gchar *guid;
g_return_val_if_fail(change->type == GGP_ROSTER_CHANGE_CONTACT_UPDATE,
FALSE);
@@ -830,10 +831,11 @@
}
/* add new */
+ guid = g_uuid_string_random();
purple_debug_misc("gg", "ggp_roster_send_update_contact_update: "
"adding %u...\n", uin);
buddy_node = purple_xmlnode_new_child(content->contacts_node, "Contact");
- succ &= ggp_xml_set_string(buddy_node, "Guid", g_uuid_string_random());
+ succ &= ggp_xml_set_string(buddy_node, "Guid", guid);
succ &= ggp_xml_set_uint(buddy_node, "GGNumber", uin);
succ &= ggp_xml_set_string(buddy_node, "ShowName",
purple_buddy_get_alias(buddy));
@@ -850,6 +852,7 @@
/* we don't use Guid, so update is not needed
* content->needs_update = TRUE;
*/
+ g_free(guid);
g_hash_table_insert(content->contact_nodes, GINT_TO_POINTER(uin),
buddy_node);
--- a/libpurple/protocols/gg/xml.c Sat Aug 22 04:03:26 2020 -0500
+++ b/libpurple/protocols/gg/xml.c Sat Aug 22 13:03:30 2020 -0500
@@ -29,7 +29,8 @@
#include "xml.h"
-gboolean ggp_xml_get_string(const PurpleXmlNode *xml, gchar *childName, gchar **var)
+gboolean
+ggp_xml_get_string(const PurpleXmlNode *xml, const gchar *childName, gchar **var)
{
char *str;
@@ -50,7 +51,8 @@
return TRUE;
}
-gboolean ggp_xml_get_bool(const PurpleXmlNode *xml, gchar *childName, gboolean *var)
+gboolean
+ggp_xml_get_bool(const PurpleXmlNode *xml, const gchar *childName, gboolean *var)
{
char *str;
gboolean succ;
@@ -68,7 +70,8 @@
return TRUE;
}
-gboolean ggp_xml_get_uint(const PurpleXmlNode *xml, gchar *childName, unsigned int *var)
+gboolean
+ggp_xml_get_uint(const PurpleXmlNode *xml, const gchar *childName, unsigned int *var)
{
char *str, *endptr;
gboolean succ;
@@ -89,7 +92,8 @@
return succ;
}
-gboolean ggp_xml_set_string(PurpleXmlNode *xml, gchar *childName, const gchar *val)
+gboolean
+ggp_xml_set_string(PurpleXmlNode *xml, const gchar *childName, const gchar *val)
{
g_return_val_if_fail(xml != NULL, FALSE);
g_return_val_if_fail(val != NULL, FALSE);
@@ -107,12 +111,14 @@
return TRUE;
}
-gboolean ggp_xml_set_bool(PurpleXmlNode *xml, gchar *childName, gboolean val)
+gboolean
+ggp_xml_set_bool(PurpleXmlNode *xml, const gchar *childName, gboolean val)
{
return ggp_xml_set_string(xml, childName, val ? "true" : "false");
}
-gboolean ggp_xml_set_uint(PurpleXmlNode *xml, gchar *childName, unsigned int val)
+gboolean
+ggp_xml_set_uint(PurpleXmlNode *xml, const gchar *childName, unsigned int val)
{
gchar buff[20];
g_snprintf(buff, sizeof(buff), "%u", val);
--- a/libpurple/protocols/gg/xml.h Sat Aug 22 04:03:26 2020 -0500
+++ b/libpurple/protocols/gg/xml.h Sat Aug 22 13:03:30 2020 -0500
@@ -32,13 +32,13 @@
#include <purple.h>
-gboolean ggp_xml_get_string(const PurpleXmlNode *xml, gchar *childName, gchar **var);
-gboolean ggp_xml_get_bool(const PurpleXmlNode *xml, gchar *childName, gboolean *var);
-gboolean ggp_xml_get_uint(const PurpleXmlNode *xml, gchar *childName, unsigned int *var);
+gboolean ggp_xml_get_string(const PurpleXmlNode *xml, const gchar *childName, gchar **var);
+gboolean ggp_xml_get_bool(const PurpleXmlNode *xml, const gchar *childName, gboolean *var);
+gboolean ggp_xml_get_uint(const PurpleXmlNode *xml, const gchar *childName, unsigned int *var);
-gboolean ggp_xml_set_string(PurpleXmlNode *xml, gchar *childName, const gchar *val);
-gboolean ggp_xml_set_bool(PurpleXmlNode *xml, gchar *childName, gboolean val);
-gboolean ggp_xml_set_uint(PurpleXmlNode *xml, gchar *childName, unsigned int val);
+gboolean ggp_xml_set_string(PurpleXmlNode *xml, const gchar *childName, const gchar *val);
+gboolean ggp_xml_set_bool(PurpleXmlNode *xml, const gchar *childName, gboolean val);
+gboolean ggp_xml_set_uint(PurpleXmlNode *xml, const gchar *childName, unsigned int val);
void ggp_xmlnode_remove_children(PurpleXmlNode *xml);