summaryrefslogtreecommitdiffstats
path: root/main/libxt/0002-unvalidated-length-in-_XtResourceConfigurationEH-CVE.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/libxt/0002-unvalidated-length-in-_XtResourceConfigurationEH-CVE.patch')
-rw-r--r--main/libxt/0002-unvalidated-length-in-_XtResourceConfigurationEH-CVE.patch78
1 files changed, 0 insertions, 78 deletions
diff --git a/main/libxt/0002-unvalidated-length-in-_XtResourceConfigurationEH-CVE.patch b/main/libxt/0002-unvalidated-length-in-_XtResourceConfigurationEH-CVE.patch
deleted file mode 100644
index 05c77504e..000000000
--- a/main/libxt/0002-unvalidated-length-in-_XtResourceConfigurationEH-CVE.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 9264a21b688891dbdcee630ff72cf39aa75fc4e1 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Sat, 9 Mar 2013 11:44:14 -0800
-Subject: [PATCH 2/2] unvalidated length in _XtResourceConfigurationEH
- [CVE-2013-2002]
-
-The RCM_DATA property is expected to be in the format:
- resource_length, resource, value
-
-If the property contains a resource_length thats results in a pointer
-outside the property string, memory corruption can occur.
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- src/ResConfig.c | 41 ++++++++++++++++++++++++++---------------
- 1 file changed, 26 insertions(+), 15 deletions(-)
-
-diff --git a/src/ResConfig.c b/src/ResConfig.c
-index 68da536..1f3edbe 100644
---- a/src/ResConfig.c
-+++ b/src/ResConfig.c
-@@ -971,26 +971,37 @@ _XtResourceConfigurationEH (
- * resource and value fields.
- */
- if (data) {
-+ char *data_end = data + nitems;
-+ char *data_value;
-+
- resource_len = Strtoul ((void *)data, &data_ptr, 10);
-- data_ptr++;
-
-- data_ptr[resource_len] = '\0';
-+ if (data_ptr != (char *) data) {
-+ data_ptr++;
-+ data_value = data_ptr + resource_len;
-+ } else /* strtoul failed to convert a number */
-+ data_ptr = data_value = NULL;
-+
-+ if (data_value > data_ptr && data_value < data_end) {
-+ *data_value++ = '\0';
-
-- resource = XtNewString (data_ptr);
-- value = XtNewString (&data_ptr[resource_len + 1]);
-+ resource = XtNewString (data_ptr);
-+ value = XtNewString (data_value);
- #ifdef DEBUG
-- fprintf (stderr, "resource_len=%d\n",resource_len);
-- fprintf (stderr, "resource = %s\t value = %s\n",
-- resource, value);
-+ fprintf (stderr, "resource_len=%d\n"
-+ resource_len);
-+ fprintf (stderr, "resource = %s\t value = %s\n",
-+ resource, value);
- #endif
-- /*
-- * descend the application widget tree and
-- * apply the value to the appropriate widgets
-- */
-- _search_widget_tree (w, resource, value);
--
-- XtFree (resource);
-- XtFree (value);
-+ /*
-+ * descend the application widget tree and
-+ * apply the value to the appropriate widgets
-+ */
-+ _search_widget_tree (w, resource, value);
-+
-+ XtFree (resource);
-+ XtFree (value);
-+ }
- }
- }
-
---
-1.8.2.3
-