summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/cyrus-imap-dev')
-rw-r--r--dev-libs/cyrus-imap-dev/ChangeLog10
-rw-r--r--dev-libs/cyrus-imap-dev/cyrus-imap-dev-2.1.10.ebuild84
-rw-r--r--dev-libs/cyrus-imap-dev/files/digest-cyrus-imap-dev-2.1.101
-rw-r--r--dev-libs/cyrus-imap-dev/files/imap-overflow.diff29
-rw-r--r--dev-libs/cyrus-imap-dev/files/libsieve-overflow.diff53
5 files changed, 176 insertions, 1 deletions
diff --git a/dev-libs/cyrus-imap-dev/ChangeLog b/dev-libs/cyrus-imap-dev/ChangeLog
index c6f8320bcba0..45835f826696 100644
--- a/dev-libs/cyrus-imap-dev/ChangeLog
+++ b/dev-libs/cyrus-imap-dev/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for dev-libs/cyrus-imap-dev
# Copyright 2002 Gentoo Technologies, Inc.; Distributed under the GPL
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/cyrus-imap-dev/ChangeLog,v 1.2 2002/11/23 06:28:36 raker Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/cyrus-imap-dev/ChangeLog,v 1.3 2002/12/04 03:25:01 raker Exp $
+
+*cyrus-imap-dev-2.1.9-r1 (03 Dec 2002)
+
+ 03 Dec 2002; Nick Hadaway <raker@gentoo.org>
+ cyrus-imapd-dev-2.1.10.ebuild,
+ files/digest-cyrus-imap-dev-2.1.10, files/libsieve-overflow.diff,
+ files/imap-overflow.diff :
+ Version bump.
*cyrus-imap-dev-2.1.9-r1 (23 Nov 2002)
diff --git a/dev-libs/cyrus-imap-dev/cyrus-imap-dev-2.1.10.ebuild b/dev-libs/cyrus-imap-dev/cyrus-imap-dev-2.1.10.ebuild
new file mode 100644
index 000000000000..e351e51de65c
--- /dev/null
+++ b/dev-libs/cyrus-imap-dev/cyrus-imap-dev-2.1.10.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2002 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/cyrus-imap-dev/cyrus-imap-dev-2.1.10.ebuild,v 1.1 2002/12/04 03:25:01 raker Exp $
+
+DESCRIPTION="Developer support for the Cyrus IMAP Server"
+HOMEPAGE="http://asg.web.cmu.edu/cyrus/imapd/"
+SRC_URI="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-${PV}.tar.gz"
+
+LICENSE="as-is"
+SLOT="0"
+KEYWORDS="~x86 -ppc -sparc -sparc64"
+
+DEPEND="virtual/glibc
+ afs? ( >=net-fs/openafs-1.2.2 )
+ snmp? ( >=net-analyzer/ucd-snmp-4.2.3 )
+ ssl? ( >=dev-libs/openssl-0.9.6 )
+ kerberos? ( >=app-crypt/krb5-1.2.5 )
+ >=sys-libs/db-3.2
+ >=sys-libs/pam-0.75
+ >=dev-libs/cyrus-sasl-2.1.2
+ >=sys-apps/tcp-wrappers-7.6"
+
+S=${WORKDIR}/cyrus-imapd-${PV}
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ patch < ${FILESDIR}/config.diff || die "patch failed"
+
+ # Kerberos libraries have changed
+ cp configure configure.orig
+ sed -e "s:-ldes:-ldes425:" \
+ < configure.orig > configure || die "patch failed"
+
+ # libsieve buffer overflow fix - bug #11537
+ patch -p1 < ${FILESDIR}/libsieve-overflow.diff || die "patch failed"
+
+ # imap buffer overflow fix - bug #11537
+ patch -p1 < ${FILESDIR}/imap-overflow.diff || die "patch failed"
+
+}
+
+src_compile() {
+ local myconf
+
+ use afs && myconf="--with-afs" \
+ || myconf="--without-afs"
+
+ use snmp && myconf="${myconf} --with-ucdsnmp=/usr" \
+ || myconf="${myconf} --without-ucdsnmp"
+
+ use ssl && myconf="${myconf} --with-openssl=/usr" \
+ || myconf="${myconf} --without-openssl"
+
+ use kerberos && myconf="${myconf} --with-krb --with-auth=krb" \
+ || myconf="${myconf} --without-krb --with-auth=unix"
+
+ econf \
+ --enable-listext \
+ --with-cyrus-group=mail \
+ --enable-netscapehack \
+ --with-com_err=yes \
+ --without-perl \
+ --disable-cyradm \
+ ${myconf}
+
+ # make depends break with -f... in CFLAGS
+ make depend CFLAGS="" || die "make depend problem"
+
+ cd ${S}/lib
+ make || die "compile problem"
+ cd ${S}/acap
+ make || die "compile problem"
+}
+
+src_install() {
+ dodoc COPYRIGHT README*
+ cd ${S}/lib
+ dodir /usr/include/cyrus
+ emake DESTDIR=${D} install || die "compile problem"
+ cd ${S}/acap
+ emake DESTDIR=${D} install || die "compile problem"
+}
diff --git a/dev-libs/cyrus-imap-dev/files/digest-cyrus-imap-dev-2.1.10 b/dev-libs/cyrus-imap-dev/files/digest-cyrus-imap-dev-2.1.10
new file mode 100644
index 000000000000..58264e839b62
--- /dev/null
+++ b/dev-libs/cyrus-imap-dev/files/digest-cyrus-imap-dev-2.1.10
@@ -0,0 +1 @@
+MD5 5c7a6d97a472263aa8ade28c0d3c55cc cyrus-imapd-2.1.10.tar.gz 1636863
diff --git a/dev-libs/cyrus-imap-dev/files/imap-overflow.diff b/dev-libs/cyrus-imap-dev/files/imap-overflow.diff
new file mode 100644
index 000000000000..c6ee0cac3864
--- /dev/null
+++ b/dev-libs/cyrus-imap-dev/files/imap-overflow.diff
@@ -0,0 +1,29 @@
+diff -urN cyrus-imapd-2.1.10/imap/imapparse.c cyrus-imapd-2.1.10-modified/imap/imapparse.c
+--- cyrus-imapd-2.1.10/imap/imapparse.c 2002-12-03 17:08:02.000000000 -0600
++++ cyrus-imapd-2.1.10-modified/imap/imapparse.c 2002-12-03 17:45:52.000000000 -0600
+@@ -97,7 +97,7 @@
+ struct buf *buf, int type)
+ {
+ int c;
+- int i;
++ unsigned int i;
+ unsigned int len = 0;
+ int sawdigit = 0;
+ int isnowait;
+@@ -228,6 +228,16 @@
+ if (c != EOF) prot_ungetc(c, pin);
+ return EOF;
+ }
++ if (len > 65536) {
++ if (isnowait) {
++ for (i = 0; i < len; i++)
++ c = prot_getc(pin);
++ }
++ prot_printf(pout, "* BAD Literal too large\r\n");
++ prot_flush(pout);
++ if (c != EOF) prot_ungetc(c, pin);
++ return EOF;
++ }
+ if (len >= buf->alloc) {
+ buf->alloc = len+1;
+ buf->s = xrealloc(buf->s, buf->alloc+1);
diff --git a/dev-libs/cyrus-imap-dev/files/libsieve-overflow.diff b/dev-libs/cyrus-imap-dev/files/libsieve-overflow.diff
new file mode 100644
index 000000000000..6878a3074192
--- /dev/null
+++ b/dev-libs/cyrus-imap-dev/files/libsieve-overflow.diff
@@ -0,0 +1,53 @@
+diff -urN cyrus-imapd-2.1.10/sieve/addr.y cyrus-imapd-2.1.10-modified/sieve/addr.y
+--- cyrus-imapd-2.1.10/sieve/addr.y 2002-12-03 17:08:02.000000000 -0600
++++ cyrus-imapd-2.1.10-modified/sieve/addr.y 2002-12-03 17:06:38.000000000 -0600
+@@ -82,8 +82,9 @@
+ /* copy address error message into buffer provided by sieve parser */
+ int yyerror(char *s)
+ {
+-extern char addrerr[];
++extern char addrerr[512];
+
+- strcpy(addrerr, s);
++ strncpy(addrerr, s, sizeof(addrerr)-1);
++ addrerr[sizeof(addrerr)-1] = '\0';
+ return 0;
+ }
+diff -urN cyrus-imapd-2.1.10/sieve/sieve.y cyrus-imapd-2.1.10-modified/sieve/sieve.y
+--- cyrus-imapd-2.1.10/sieve/sieve.y 2002-12-03 17:08:02.000000000 -0600
++++ cyrus-imapd-2.1.10-modified/sieve/sieve.y 2002-12-03 17:06:38.000000000 -0600
+@@ -810,7 +810,7 @@
+ addrptr = s;
+ addrerr[0] = '\0'; /* paranoia */
+ if (addrparse()) {
+- sprintf(errbuf, "address '%s': %s", s, addrerr);
++ snprintf(errbuf, sizeof(errbuf), "address '%s': %s", s, addrerr);
+ yyerror(errbuf);
+ return 0;
+ }
+@@ -835,7 +835,7 @@
+ ; controls, SP, and
+ ; ":". */
+ if (!((*h >= 33 && *h <= 57) || (*h >= 59 && *h <= 126))) {
+- sprintf(errbuf, "header '%s': not a valid header", hdr);
++ snprintf(errbuf, sizeof(errbuf), "header '%s': not a valid header", hdr);
+ yyerror(errbuf);
+ return 0;
+ }
+@@ -853,14 +853,14 @@
+ if (strcmp(f, "\\seen") && strcmp(f, "\\answered") &&
+ strcmp(f, "\\flagged") && strcmp(f, "\\draft") &&
+ strcmp(f, "\\deleted")) {
+- sprintf(errbuf, "flag '%s': not a system flag", f);
++ snprintf(errbuf, sizeof(errbuf), "flag '%s': not a system flag", f);
+ yyerror(errbuf);
+ return 0;
+ }
+ return 1;
+ }
+ if (!imparse_isatom(f)) {
+- sprintf(errbuf, "flag '%s': not a valid keyword", f);
++ snprintf(errbuf, sizeof(errbuf), "flag '%s': not a valid keyword", f);
+ yyerror(errbuf);
+ return 0;
+ }