aboutsummaryrefslogtreecommitdiff
path: root/debian/patches/use-g_strdup.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/use-g_strdup.patch')
-rw-r--r--debian/patches/use-g_strdup.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/debian/patches/use-g_strdup.patch b/debian/patches/use-g_strdup.patch
new file mode 100644
index 0000000..9651da2
--- /dev/null
+++ b/debian/patches/use-g_strdup.patch
@@ -0,0 +1,25 @@
+Description: Use g_strdup() to pass strings to g_hash_table_insert()
+ Otherwise use-after-free happens soon.
+Author: Dmitry Borisyuk <q1werty@i.com.ua>
+--- a/fbxkb.c
++++ b/fbxkb.c
+@@ -266,7 +266,6 @@
+ {
+ GdkPixbuf *flag;
+ static GString *s = NULL;
+- char tmp[3];
+
+ ENTER;
+ g_assert(sym != NULL && strlen(sym) > 1);
+@@ -281,10 +280,7 @@
+ flag = gdk_pixbuf_new_from_file_at_size(s->str, 24, 24, NULL);
+ if (!flag)
+ RET(zzflag);
+- tmp[0] = sym[0];
+- tmp[1] = sym[1];
+- tmp[2] = 0;
+- g_hash_table_insert(sym2pix, tmp, flag);
++ g_hash_table_insert(sym2pix, g_strdup(sym), flag);
+ RET(flag);
+ }
+
bgstack15