summary refs log tree commit diff
path: root/gnu/packages/patches/glib-CVE-2021-27219-08.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/glib-CVE-2021-27219-08.patch')
-rw-r--r--gnu/packages/patches/glib-CVE-2021-27219-08.patch94
1 files changed, 0 insertions, 94 deletions
diff --git a/gnu/packages/patches/glib-CVE-2021-27219-08.patch b/gnu/packages/patches/glib-CVE-2021-27219-08.patch
deleted file mode 100644
index 2c021ad317..0000000000
--- a/gnu/packages/patches/glib-CVE-2021-27219-08.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From ba8ca443051f93a74c0d03d62e70402036f967a5 Mon Sep 17 00:00:00 2001
-From: Philip Withnall <pwithnall@endlessos.org>
-Date: Thu, 4 Feb 2021 13:58:32 +0000
-Subject: [PATCH 08/11] gkeyfilesettingsbackend: Handle long keys when
- converting paths
-
-Previously, the code in `convert_path()` could not handle keys longer
-than `G_MAXINT`, and would overflow if that was exceeded.
-
-Convert the code to use `gsize` and `g_memdup2()` throughout, and
-change from identifying the position of the final slash in the string
-using a signed offset `i`, to using a pointer to the character (and
-`strrchr()`). This allows the slash to be at any position in a
-`G_MAXSIZE`-long string, without sacrificing a bit of the offset for
-indicating whether a slash was found.
-
-Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
-Helps: #2319
----
- gio/gkeyfilesettingsbackend.c | 21 ++++++++++-----------
- 1 file changed, 10 insertions(+), 11 deletions(-)
-
-diff --git a/gio/gkeyfilesettingsbackend.c b/gio/gkeyfilesettingsbackend.c
-index cd5765afd..25b057672 100644
---- a/gio/gkeyfilesettingsbackend.c
-+++ b/gio/gkeyfilesettingsbackend.c
-@@ -33,6 +33,7 @@
- #include "gfilemonitor.h"
- #include "gsimplepermission.h"
- #include "gsettingsbackendinternal.h"
-+#include "gstrfuncsprivate.h"
- #include "giomodule-priv.h"
- #include "gportalsupport.h"
- 
-@@ -145,8 +146,8 @@ convert_path (GKeyfileSettingsBackend  *kfsb,
-               gchar                   **group,
-               gchar                   **basename)
- {
--  gint key_len = strlen (key);
--  gint i;
-+  gsize key_len = strlen (key);
-+  const gchar *last_slash;
- 
-   if (key_len < kfsb->prefix_len ||
-       memcmp (key, kfsb->prefix, kfsb->prefix_len) != 0)
-@@ -155,38 +156,36 @@ convert_path (GKeyfileSettingsBackend  *kfsb,
-   key_len -= kfsb->prefix_len;
-   key += kfsb->prefix_len;
- 
--  for (i = key_len; i >= 0; i--)
--    if (key[i] == '/')
--      break;
-+  last_slash = strrchr (key, '/');
- 
-   if (kfsb->root_group)
-     {
-       /* if a root_group was specified, make sure the user hasn't given
-        * a path that ghosts that group name
-        */
--      if (i == kfsb->root_group_len && memcmp (key, kfsb->root_group, i) == 0)
-+      if (last_slash != NULL && (last_slash - key) == kfsb->root_group_len && memcmp (key, kfsb->root_group, last_slash - key) == 0)
-         return FALSE;
-     }
-   else
-     {
-       /* if no root_group was given, ensure that the user gave a path */
--      if (i == -1)
-+      if (last_slash == NULL)
-         return FALSE;
-     }
- 
-   if (group)
-     {
--      if (i >= 0)
-+      if (last_slash != NULL)
-         {
--          *group = g_memdup (key, i + 1);
--          (*group)[i] = '\0';
-+          *group = g_memdup2 (key, (last_slash - key) + 1);
-+          (*group)[(last_slash - key)] = '\0';
-         }
-       else
-         *group = g_strdup (kfsb->root_group);
-     }
- 
-   if (basename)
--    *basename = g_memdup (key + i + 1, key_len - i);
-+    *basename = g_memdup2 (last_slash + 1, key_len - (last_slash - key));
- 
-   return TRUE;
- }
--- 
-2.30.1
-