summaryrefslogtreecommitdiff
path: root/libpurple/xmlnode.c
diff options
context:
space:
mode:
authorGary Kramlich <grim@reaperworld.com>2021-02-07 01:42:09 -0600
committerGary Kramlich <grim@reaperworld.com>2021-02-07 01:42:09 -0600
commitbb01a2f383df86e9c917f6b755c1369d179ccdef (patch)
tree7c427fab30ab06365746c37aa1d1daa559ea3881 /libpurple/xmlnode.c
parentb74e34a077b5f15d79ba1f61ca4d353c4f41532d (diff)
downloadpidgin-bb01a2f383df86e9c917f6b755c1369d179ccdef.tar.gz
Implement mitigation for GHSL-2021-045
This add a static inline version of `g_memdup2` if the version of glib we're compiling against doesn't have the function. GHSL-2021-045 was originally reported to glib at https://gitlab.gnome.org/GNOME/glib/-/issues/2319. More information about the entire situation can be found on the gnome desktop-devel-list at https://mail.gnome.org/archives/desktop-devel-list/2021-February/msg00000.html Testing Done: Compiled and ran unit tests. Reviewed at https://reviews.imfreedom.org/r/482/
Diffstat (limited to 'libpurple/xmlnode.c')
-rw-r--r--libpurple/xmlnode.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libpurple/xmlnode.c b/libpurple/xmlnode.c
index cbaea7a6d7..49f120713b 100644
--- a/libpurple/xmlnode.c
+++ b/libpurple/xmlnode.c
@@ -36,6 +36,7 @@
#include "purplemarkup.h"
#include "util.h"
#include "xmlnode.h"
+#include "glibcompat.h"
#ifdef _WIN32
# define NEWLINE_S "\r\n"
@@ -108,7 +109,7 @@ purple_xmlnode_insert_data(PurpleXmlNode *node, const char *data, gssize size)
child = new_node(NULL, PURPLE_XMLNODE_TYPE_DATA);
- child->data = g_memdup(data, real_size);
+ child->data = g_memdup2(data, real_size);
child->data_sz = real_size;
purple_xmlnode_insert_child(node, child);
@@ -899,7 +900,7 @@ purple_xmlnode_copy(const PurpleXmlNode *src)
ret->xmlns = g_strdup(src->xmlns);
if (src->data) {
if (src->data_sz) {
- ret->data = g_memdup(src->data, src->data_sz);
+ ret->data = g_memdup2(src->data, src->data_sz);
ret->data_sz = src->data_sz;
} else {
ret->data = g_strdup(src->data);