diff options
-rw-r--r-- | .SRCINFO | 51 | ||||
-rw-r--r-- | PKGBUILD | 64 | ||||
-rw-r--r-- | gdkwin-nullcheck.patch | 14 | ||||
-rw-r--r-- | gtk2.install | 17 | ||||
-rw-r--r-- | gtkrc | 3 | ||||
-rw-r--r-- | xid-collision-debug.patch | 15 |
6 files changed, 164 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..bf394f768eb9 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,51 @@ +pkgbase = gtk2-patched-gdkwin-nullcheck + pkgdesc = GTK2 patched with NULL-check to prevent use-after-free in gdk_window_add_filter. + pkgver = 2.24.28 + pkgrel = 1 + url = https://bugzilla.gnome.org/show_bug.cgi?id=747280 + install = gtk2.install + arch = i686 + arch = x86_64 + license = LGPL + makedepends = atk + makedepends = pango + makedepends = libxcursor + makedepends = libxinerama + makedepends = libxrandr + makedepends = libxi + makedepends = libxcomposite + makedepends = libxdamage + makedepends = shared-mime-info + makedepends = cairo + makedepends = libcups + makedepends = gdk-pixbuf2 + makedepends = gobject-introspection + makedepends = python2 + depends = atk + depends = pango + depends = libxcursor + depends = libxinerama + depends = libxrandr + depends = libxi + depends = libxcomposite + depends = libxdamage + depends = shared-mime-info + depends = cairo + depends = libcups + depends = gtk-update-icon-cache + optdepends = gnome-themes-standard: Default widget theme + optdepends = gnome-icon-theme: Default icon theme + provides = gtk2=2.24.28 + conflicts = gtk2 + replaces = gtk2-docs + source = http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.28.tar.xz + source = gtkrc + source = xid-collision-debug.patch + source = gdkwin-nullcheck.patch + sha256sums = b2c6441e98bc5232e5f9bba6965075dcf580a8726398f7374d39f90b88ed4656 + sha256sums = b77a427df55a14182c10ad7e683b4d662df2846fcd38df2aa8918159d6be3ae2 + sha256sums = d758bb93e59df15a4ea7732cf984d1c3c19dff67c94b957575efea132b8fe558 + sha256sums = a44200b28f7af6a1c84cbc35bc5c91e39a69e36454f8eb345ef29bc1c7e10369 + +pkgname = gtk2-patched-gdkwin-nullcheck + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..ec37434a953a --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,64 @@ +# Maintainer: Kasper Sacharias Roos Eenberg <kse@mahavira.dk> +# Many thanks to the two following, who created the PKGBUILD this one is +# based on: +# Vaporeon <vaporeon@tfwno.gf> +# Jan de Groot <jgc@archlinux.org> + +pkgbase=gtk2-patched-gdkwin-nullcheck +pkgname=gtk2-patched-gdkwin-nullcheck +pkgver=2.24.28 +pkgrel=1 +arch=('i686' 'x86_64') +pkgdesc="GTK2 patched with NULL-check to prevent use-after-free in gdk_window_add_filter." +url="https://bugzilla.gnome.org/show_bug.cgi?id=747280" +provides="gtk2=$pkgver" +conflicts=gtk2 +install=gtk2.install +makedepends=('atk' 'pango' 'libxcursor' 'libxinerama' 'libxrandr' 'libxi' + 'libxcomposite' 'libxdamage' 'shared-mime-info' 'cairo' 'libcups' + 'gdk-pixbuf2' 'gobject-introspection' 'python2') +depends=('atk' 'pango' 'libxcursor' 'libxinerama' 'libxrandr' 'libxi' + 'libxcomposite' 'libxdamage' 'shared-mime-info' 'cairo' 'libcups' + 'gtk-update-icon-cache') +optdepends=('gnome-themes-standard: Default widget theme' + 'gnome-icon-theme: Default icon theme') +replaces=('gtk2-docs') +license=('LGPL') +source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-$pkgver.tar.xz + gtkrc xid-collision-debug.patch gdkwin-nullcheck.patch) +sha256sums=('b2c6441e98bc5232e5f9bba6965075dcf580a8726398f7374d39f90b88ed4656' + 'b77a427df55a14182c10ad7e683b4d662df2846fcd38df2aa8918159d6be3ae2' + 'd758bb93e59df15a4ea7732cf984d1c3c19dff67c94b957575efea132b8fe558' + 'a44200b28f7af6a1c84cbc35bc5c91e39a69e36454f8eb345ef29bc1c7e10369') + +prepare() { + cd gtk+-$pkgver + patch -Np1 -i ../xid-collision-debug.patch + patch -Np1 -i ../gdkwin-nullcheck.patch +} + +build() { + cd gtk+-$pkgver + + CXX=/bin/false ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-xinput=yes + + # https://bugzilla.gnome.org/show_bug.cgi?id=655517 + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + + make +} + +package() { + cd gtk+-$pkgver + make DESTDIR="$pkgdir" install + + sed -i "s#env python#env python2#" $pkgdir/usr/bin/gtk-builder-convert + + install -Dm644 "$srcdir/gtkrc" "$pkgdir/usr/share/gtk-2.0/gtkrc" + + #split this out to use with gtk3 too + rm $pkgdir/usr/bin/gtk-update-icon-cache +} diff --git a/gdkwin-nullcheck.patch b/gdkwin-nullcheck.patch new file mode 100644 index 000000000000..93d137ccfe22 --- /dev/null +++ b/gdkwin-nullcheck.patch @@ -0,0 +1,14 @@ +diff --git a/gtk/gtktrayicon-x11.c b/gtk/gtktrayicon-x11.c
+index 94a2d26..f9d1c2a 100644
+--- a/gtk/gtktrayicon-x11.c
++++ b/gtk/gtktrayicon-x11.c
+@@ -508,7 +508,8 @@ gtk_tray_icon_update_manager_window (GtkTrayIcon *icon)
+ gdkwin = gdk_window_lookup_for_display (display,
+ icon->priv->manager_window);
+
+- gdk_window_add_filter (gdkwin, gtk_tray_icon_manager_filter, icon);
++ if (gdkwin != NULL)
++ gdk_window_add_filter (gdkwin, gtk_tray_icon_manager_filter, icon);
+
+ gtk_tray_icon_get_orientation_property (icon);
+ gtk_tray_icon_get_visual_property (icon);
diff --git a/gtk2.install b/gtk2.install new file mode 100644 index 000000000000..f14e648d38bb --- /dev/null +++ b/gtk2.install @@ -0,0 +1,17 @@ +post_install() { + /usr/bin/gtk-query-immodules-2.0 --update-cache +} + +pre_upgrade() { + if (( $(vercmp $2 2.24.20) < 0 )); then + rm -f /etc/gtk-2.0/gtk.immodules + fi +} + +post_upgrade() { + post_install +} + +pre_remove() { + rm -f /usr/lib/gtk-2.0/2.10.0/immodules.cache +} diff --git a/gtkrc b/gtkrc new file mode 100644 index 000000000000..d2282ac36e5f --- /dev/null +++ b/gtkrc @@ -0,0 +1,3 @@ +gtk-icon-theme-name = "gnome" +gtk-theme-name = "Adwaita" +gtk-font-name = "Cantarell 11" diff --git a/xid-collision-debug.patch b/xid-collision-debug.patch new file mode 100644 index 000000000000..d61238c3b274 --- /dev/null +++ b/xid-collision-debug.patch @@ -0,0 +1,15 @@ +--- gtk+-2.18.3/gdk/x11/gdkxid.c 2009-06-19 04:59:18.000000000 +0200 ++++ gtk+-2.18.3/gdk/x11/gdkxid.c.new 2009-07-22 11:30:12.000000000 +0200 +@@ -56,10 +56,10 @@ + if (!display_x11->xid_ht) + display_x11->xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash, + (GEqualFunc) gdk_xid_equal); +- ++/* + if (g_hash_table_lookup (display_x11->xid_ht, xid)) + g_warning ("XID collision, trouble ahead"); +- ++*/ + g_hash_table_insert (display_x11->xid_ht, xid, data); + } + |