summaryrefslogtreecommitdiff
path: root/extra/xfce4-xkb-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'extra/xfce4-xkb-plugin')
-rw-r--r--extra/xfce4-xkb-plugin/PKGBUILD46
-rw-r--r--extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.4.3-2-fix-memory-corruption.patch59
2 files changed, 88 insertions, 17 deletions
diff --git a/extra/xfce4-xkb-plugin/PKGBUILD b/extra/xfce4-xkb-plugin/PKGBUILD
index ee0f53873..1ed492de2 100644
--- a/extra/xfce4-xkb-plugin/PKGBUILD
+++ b/extra/xfce4-xkb-plugin/PKGBUILD
@@ -1,34 +1,46 @@
-# $Id: PKGBUILD 157903 2012-04-30 04:21:40Z foutrelis $
-# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# $Id: PKGBUILD 168753 2012-10-15 14:42:49Z foutrelis $
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: AndyRTR <andyrtr@archlinux.org>
# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
pkgname=xfce4-xkb-plugin
pkgver=0.5.4.3
-pkgrel=2
+pkgrel=3
pkgdesc="Plugin to switch keyboard layouts for the Xfce4 panel"
arch=('i686' 'x86_64')
-license=('custom')
url="http://goodies.xfce.org/projects/panel-plugins/xfce4-xkb-plugin"
+license=('custom')
groups=('xfce4-goodies')
-depends=('xfce4-panel' 'libxklavier>=5.0' 'librsvg')
+depends=('xfce4-panel' 'libxklavier' 'librsvg')
makedepends=('intltool')
options=('!libtool')
-source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/${pkgver%.*.*}/${pkgname}-${pkgver}.tar.bz2)
-sha1sums=('4dc42f96dc16a3bd78f86454ea3a931464e18497')
+source=(http://archive.xfce.org/src/panel-plugins/$pkgname/0.5/$pkgname-$pkgver.tar.bz2
+ xfce4-xkb-plugin-0.5.4.3-2-fix-memory-corruption.patch)
+sha256sums=('ca4801bb2edfe04eeceb71879b3cf79a0674e8311c39117efdb9d3521307396d'
+ 'f5e6e5964df897045ed8c3443f632033689409459acdc54c0351264edc11b4ce')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr \
- --sysconfdir=/etc \
- --libexecdir=/usr/lib \
- --localstatedir=/var \
- --disable-static \
- --disable-debug
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # https://bugs.archlinux.org/task/31880
+ patch -Np1 -i "$srcdir/xfce4-xkb-plugin-0.5.4.3-2-fix-memory-corruption.patch"
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
make
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install
- install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.4.3-2-fix-memory-corruption.patch b/extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.4.3-2-fix-memory-corruption.patch
new file mode 100644
index 000000000..16f684b12
--- /dev/null
+++ b/extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.4.3-2-fix-memory-corruption.patch
@@ -0,0 +1,59 @@
+From ac73bc9de624d322b318c2eda0ace7f0bee97a64 Mon Sep 17 00:00:00 2001
+From: Igor Slepchin <igor.slepchin@gmail.com>
+Date: Thu, 19 Jul 2012 05:59:40 +0000
+Subject: Fix memory corruption.
+
+g_free(c) in the original code was freeing memory at the pointer
+that was incremented a few times since the allocation.
+
+This is similar to ubuntu bug #899290 and fedora bug 589898.
+---
+diff --git a/panel-plugin/xkb-util.c b/panel-plugin/xkb-util.c
+index d0d0230..324928f 100644
+--- a/panel-plugin/xkb-util.c
++++ b/panel-plugin/xkb-util.c
+@@ -66,11 +66,10 @@ xkb_util_get_layout_string (const gchar *group_name, const gchar *variant)
+ gchar*
+ xkb_util_normalize_group_name (const gchar* group_name)
+ {
+- gchar *c;
++ const gchar *c;
+ gchar *result;
+ gint cut_length;
+ gint index_of_na = -1;
+- gint index_tmp = -1;
+
+ if (!group_name)
+ return NULL;
+@@ -78,27 +77,19 @@ xkb_util_normalize_group_name (const gchar* group_name)
+ if (strlen (group_name) <= 3)
+ return g_strdup (group_name);
+
+- c = g_strdup (group_name);
+-
+- while (*c)
++ for (c = group_name; *c; c++)
+ {
+- index_tmp++;
+-
+ if (!((*c >= 'a' && *c <= 'z') || (*c >= 'A' && *c <= 'Z')))
+ {
+- index_of_na = index_tmp;
++ index_of_na = group_name - c;
+ break;
+ }
+-
+- c++;
+ }
+
+ cut_length = (index_of_na != -1 && index_of_na <= 3) ? index_of_na : 3;
+
+ result = g_strndup (group_name, cut_length);
+
+- g_free (c);
+-
+ return result;
+ }
+
+--
+cgit v0.9.0.3