From bdc766ed1b2012f5093737e03b324bc3592683e9 Mon Sep 17 00:00:00 2001 From: Nicolas Boichat Date: Sun, 13 Jul 2014 10:15:42 +0800 Subject: [PATCH] extra/enlightenment: fix segfault on start enlightenment_start stops very quickly with a segfault: (gdb) bt #0 0xb6bcba1c in pause () from /usr/lib/libpthread.so.0 #1 #2 0x0007672c in e_desk_show () #3 0x0010ace8 in e_zone_desk_count_set () #4 0x00000000 in ?? () After recompiling with debug symbols, I noticed this is due to some memory corruption, and found an upstream patch that fixes the problem (applied in their enlightenment-0.18 branch but not in release 0.18.8): http://git.enlightenment.org/core/enlightenment.git/commit/?h=enlightenment-0.18&id=590eb392f1438d2cde775a93aa1178c61b75e9e7 Technically, the bug is also present on x86, but does not cause a segfault. --- extra/enlightenment/PKGBUILD | 16 +++++++++--- ...enlightenment-0.18.8-e-desk-overflow.patch | 26 +++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 extra/enlightenment/enlightenment-0.18.8-e-desk-overflow.patch diff --git a/extra/enlightenment/PKGBUILD b/extra/enlightenment/PKGBUILD index 9ce21380d..a78521596 100644 --- a/extra/enlightenment/PKGBUILD +++ b/extra/enlightenment/PKGBUILD @@ -1,9 +1,12 @@ # Maintainer: Ronald van Haren # Contributor: Enlightenment Developers > +# ALARM: Nicolas Boichat +# - Add upstream patch to fix overflow in e_desk.c + pkgname=enlightenment pkgver=0.18.8 -pkgrel=1 +pkgrel=1.1 pkgdesc="Enlightenment window manager" arch=('i686' 'x86_64') url="http://www.enlightenment.org" @@ -17,9 +20,16 @@ conflicts=("enlightenment17") replaces=("enlightenment17") backup=('etc/enlightenment/sysactions.conf' 'etc/xdg/menus/enlightenment.menu') -source=(http://download.enlightenment.org/rel/apps/${pkgname}/$pkgname-$pkgver.tar.gz) +source=(http://download.enlightenment.org/rel/apps/${pkgname}/$pkgname-$pkgver.tar.gz + enlightenment-0.18.8-e-desk-overflow.patch) install=enlightenment.install -sha1sums=('71d6212fc55ba65a47d656b0bc4891684445e3ff') +sha1sums=('71d6212fc55ba65a47d656b0bc4891684445e3ff' + 'd915cfde817dddd9e2ecf673aea53dfd06344813') + +prepare() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -p1 -i "${srcdir}/enlightenment-0.18.8-e-desk-overflow.patch" +} build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/extra/enlightenment/enlightenment-0.18.8-e-desk-overflow.patch b/extra/enlightenment/enlightenment-0.18.8-e-desk-overflow.patch new file mode 100644 index 000000000..57041d17a --- /dev/null +++ b/extra/enlightenment/enlightenment-0.18.8-e-desk-overflow.patch @@ -0,0 +1,26 @@ +From 9e6c276905b13fb4a2d795fee5f98d52aecb354b Mon Sep 17 00:00:00 2001 +From: Carlos Rafael Giani +Date: Sun, 1 Jun 2014 14:45:49 +0200 +Subject: bugfix: Fix buffer overflow in desk_show. + +Was the wrong structure type which caused writing after the allocated +size and was generally bad and wrong. + +Signed-off-by: Carlos Rafael Giani + +diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c +index 8c97364..854946a 100644 +--- a/src/bin/e_desk.c ++++ b/src/bin/e_desk.c +@@ -224,7 +224,7 @@ e_desk_show(E_Desk *desk) + E_Event_Desk_Show *ev; + E_Event_Desk_Before_Show *eev; + E_Event_Desk_After_Show *eeev; +- Edje_Message_Float_Set *msg; ++ Edje_Message_Int_Set *msg; + Eina_List *l; + E_Shelf *es; + int was_zone = 0, x, y, dx = 0, dy = 0; +-- +cgit v0.10.1 +