From c270fd5b2cd42b593708a919254fbbb609bbf641 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Sep 2013 02:15:19 -0700 Subject: Wed Sep 4 02:13:41 PDT 2013 --- community/libsieve/PKGBUILD | 33 +++++++++++++--- community/libsieve/crash-fix.patch | 78 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 community/libsieve/crash-fix.patch (limited to 'community/libsieve') diff --git a/community/libsieve/PKGBUILD b/community/libsieve/PKGBUILD index 47887d420..245294222 100644 --- a/community/libsieve/PKGBUILD +++ b/community/libsieve/PKGBUILD @@ -1,23 +1,28 @@ -# $Id: PKGBUILD 96634 2013-09-02 16:06:17Z spupykin $ +# $Id: PKGBUILD 96725 2013-09-03 13:55:48Z spupykin $ # Maintainer: Sergej Pupykin pkgname=libsieve pkgver=2.3.1 -pkgrel=2 +pkgrel=3 pkgdesc="sieve interpretator lib" arch=(i686 x86_64) url="http://libsieve.sourceforge.net/" license=('GPL') options=('!libtool') source=("https://github.com/downloads/sodabrew/libsieve/libsieve-$pkgver.tar.gz" - "glibc-regex.patch") + "glibc-regex.patch" + "crash-fix.patch") md5sums=('bb48eecf877cc7fdb2b0dfe757b48d7a' - '0d98d9e8f0583857616b2ba98f1833fa') + '0d98d9e8f0583857616b2ba98f1833fa' + '05ce47217ced05fd32a3ae41dc37f07e') prepare() { cd "$srcdir/$pkgname-$pkgver" rm -rf src/sv_regex + rm -f src/sv_parser/{addr,header,sieve}.{c,h} + rm -f src/sv_parser/{addr,header,sieve}-lex.{c,h} patch -p1 <$srcdir/glibc-regex.patch + patch -p1 <$srcdir/crash-fix.patch } build() { @@ -25,16 +30,32 @@ build() { aclocal automake autoconf +# export CFLAGS="-g -O2" +# export LDFLAGS="-g -O2" ./configure --prefix=/usr + (cd src/sv_parser && for i in `ls -1 *.l | sed 's|\.l||'`; do flex --header-file=$i.h -o $i.c $i.l; done) make } check() { cd "$srcdir/$pkgname-$pkgver/src/sv_test" + export LD_LIBRARY_PATH=$srcdir/libsieve-$pkgver/src/.libs:$LD_LIBRARY_PATH ls -1 script* | while read script; do ls -1 message* | while read msg; do - msg "checking $script $msg" - ./example $script $msg || true # upstream bugs? + if [ "$script" == "script22.sv" ]; then + # script22.sv: syntax errors check + msg "checking !$script $msg" + ./example $script $msg && false || true + else + if [ "$script" == "script23.sv" ]; then + # script23.sv: enotify looks unsupported or I don't know how to use it - skip it + msg "skipping $script $msg" + true + else + msg "checking $script $msg" + ./example $script $msg + fi + fi done done } diff --git a/community/libsieve/crash-fix.patch b/community/libsieve/crash-fix.patch new file mode 100644 index 000000000..7dfde87cc --- /dev/null +++ b/community/libsieve/crash-fix.patch @@ -0,0 +1,78 @@ +diff -wbBur libsieve-2.3.1/src/sv_parser/header.y libsieve-2.3.1.q/src/sv_parser/header.y +--- libsieve-2.3.1/src/sv_parser/header.y 2012-05-31 13:16:50.000000000 +0400 ++++ libsieve-2.3.1.q/src/sv_parser/header.y 2013-09-02 20:21:26.000000000 +0400 +@@ -70,7 +70,7 @@ + } + | body WRAP { + TRACE_DEBUG( "body: body WRAP: %s %s", $1, $2 ); +- $$ = libsieve_strbuf(context->strbuf, libsieve_strconcat( $1, $2, NULL ), strlen($1)+strlen($2), FREEME); ++ $$ = libsieve_strbuf(context->strbuf, libsieve_strconcat( $1 ? $1 : "", $2, NULL ), strlen($1 ? $1 : "")+strlen($2), FREEME); + }; + + %% +diff -wbBur libsieve-2.3.1/src/sv_parser/addr.y libsieve-2.3.1.q/src/sv_parser/addr.y +--- libsieve-2.3.1/src/sv_parser/addr.y 2012-05-31 13:16:50.000000000 +0400 ++++ libsieve-2.3.1.q/src/sv_parser/addr.y 2013-09-02 21:42:15.267979609 +0400 +@@ -38,6 +38,7 @@ + + /* sv_util */ + #include "src/sv_util/util.h" ++#include "src/sv_interface/context2.h" + + /* sv_parser */ + #include "addr.h" +@@ -74,10 +74,10 @@ + context->addr_addr->name = $1; + }; + +-address: mailbox_list { TRACE_DEBUG( "address: mailbox: %s", $1 ); } +- | group { TRACE_DEBUG( "address: group: %s", $1 ); }; ++address: mailbox_list { $$ = $1; TRACE_DEBUG( "address: mailbox: %s", $1 ); } ++ | group { $$ = $1; TRACE_DEBUG( "address: group: %s", $1 ); }; + +-group: phrase ':' ';' { TRACE_DEBUG( "group: phrase: %s", $1 ); } ++group: phrase ':' ';' { $$ = $1; TRACE_DEBUG( "group: phrase: %s", $1 ); } + | phrase ':' mailbox_list ';' { TRACE_DEBUG( "group: phrase mailbox_list: %s %s", $1, $3 ); }; + + mailbox_list: mailbox { +@@ -94,8 +94,8 @@ + }; + + mailbox: +- angle_addr { TRACE_DEBUG( "mailbox: angle_addr: %s", $1 ); } +- | addr_spec { TRACE_DEBUG( "mailbox: addr_spec: %s", $1 ); } ++ angle_addr { $$ = $1; TRACE_DEBUG( "mailbox: angle_addr: %s", $1 ); } ++ | addr_spec { $$ = $1; TRACE_DEBUG( "mailbox: addr_spec: %s", $1 ); } + | phrase angle_addr { + TRACE_DEBUG( "mailbox: phrase angle_addr: %s %s", $1, $2 ); + // This is a "top terminal" state... +@@ -103,7 +103,7 @@ + context->addr_addr->name = libsieve_strdup( $1 ); + }; + +-angle_addr: '<' addr_spec '>' { TRACE_DEBUG( "angle_addr: addr_spec: %s", $2 ); } ++angle_addr: '<' addr_spec '>' { $$ = $2; TRACE_DEBUG( "angle_addr: addr_spec: %s", $2 ); } + | '<' route ':' addr_spec '>' { + TRACE_DEBUG( "angle_addr: route addr_spec: %s:%s", $2, $4 ); + // This is a "top terminal" state... +@@ -133,13 +133,13 @@ + $$ = libsieve_strbuf(context->strbuf, libsieve_strconcat( "@", $2, ",", $4, NULL ), strlen($2)+strlen($4)+2, FREEME); + }; + +-local_part: DOTATOM { TRACE_DEBUG( "local_part: DOTATOM: %s", $1 ); } +- | ATOM { TRACE_DEBUG( "local_part: ATOM : %s", $1); } +- | qstring { TRACE_DEBUG( "local_part: qstring: %s", $1); } +- +-domain: DOTATOM { TRACE_DEBUG( "domain: DOTATOM: %s", $1 ); } +- | ATOM { TRACE_DEBUG("domain: ATOM: %s", $1); } +- | domainlit { TRACE_DEBUG( "domain: domainlit: %s", $1); }; ++local_part: DOTATOM { $$ = $1; TRACE_DEBUG( "local_part: DOTATOM: %s", $1 ); } ++ | ATOM { $$ = $1; TRACE_DEBUG( "local_part: ATOM : %s", $1); } ++ | qstring { $$ = $1; TRACE_DEBUG( "local_part: qstring: %s", $1); } ++ ++domain: DOTATOM { $$ = $1; TRACE_DEBUG( "domain: DOTATOM: %s", $1 ); } ++ | ATOM { $$ = $1; TRACE_DEBUG("domain: ATOM: %s", $1); } ++ | domainlit { $$ = $1; TRACE_DEBUG( "domain: domainlit: %s", $1); }; + + domainlit: '[' DTEXT ']' { + TRACE_DEBUG( "domainlit: DTEXT: %s", $2 ); -- cgit v1.2.3-54-g00ecf