diff options
Diffstat (limited to 'app-office/kword')
-rw-r--r-- | app-office/kword/ChangeLog | 11 | ||||
-rw-r--r-- | app-office/kword/files/digest-kword-1.4.1-r1 | 1 | ||||
-rw-r--r-- | app-office/kword/files/digest-kword-1.4.2 | 1 | ||||
-rw-r--r-- | app-office/kword/files/koffice-1.4.1-rtfimport.patch | 325 | ||||
-rw-r--r-- | app-office/kword/kword-1.4.1-r1.ebuild | 57 | ||||
-rw-r--r-- | app-office/kword/kword-1.4.2.ebuild | 54 |
6 files changed, 448 insertions, 1 deletions
diff --git a/app-office/kword/ChangeLog b/app-office/kword/ChangeLog index a0a94528dae2..e44aa28f0bb6 100644 --- a/app-office/kword/ChangeLog +++ b/app-office/kword/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for app-office/kword # Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-office/kword/ChangeLog,v 1.15 2005/09/12 14:07:17 agriffis Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-office/kword/ChangeLog,v 1.16 2005/10/10 22:10:08 greg_g Exp $ + +*kword-1.4.2 (10 Oct 2005) +*kword-1.4.1-r1 (10 Oct 2005) + + 10 Oct 2005; Gregorio Guidi <greg_g@gentoo.org> + +files/koffice-1.4.1-rtfimport.patch, +kword-1.4.1-r1.ebuild, + +kword-1.4.2.ebuild: + New version. Includes fix for buffer overflow in RTF import. Fix applied to + 1.4.1, too. 12 Sep 2005; Aron Griffis <agriffis@gentoo.org> kword-1.4.1.ebuild: Mark 1.4.1 stable on alpha diff --git a/app-office/kword/files/digest-kword-1.4.1-r1 b/app-office/kword/files/digest-kword-1.4.1-r1 new file mode 100644 index 000000000000..47d9bab5c838 --- /dev/null +++ b/app-office/kword/files/digest-kword-1.4.1-r1 @@ -0,0 +1 @@ +MD5 91a7b68757addc5934c5a8209a4926d5 koffice-1.4.1.tar.bz2 19364338 diff --git a/app-office/kword/files/digest-kword-1.4.2 b/app-office/kword/files/digest-kword-1.4.2 new file mode 100644 index 000000000000..a054824ae545 --- /dev/null +++ b/app-office/kword/files/digest-kword-1.4.2 @@ -0,0 +1 @@ +MD5 6b456fb7d54c84b11396b27a96ae0cf8 koffice-1.4.2.tar.bz2 19486852 diff --git a/app-office/kword/files/koffice-1.4.1-rtfimport.patch b/app-office/kword/files/koffice-1.4.1-rtfimport.patch new file mode 100644 index 000000000000..1bcf326fe121 --- /dev/null +++ b/app-office/kword/files/koffice-1.4.1-rtfimport.patch @@ -0,0 +1,325 @@ +diff -Nur koffice-1.4.1.orig/filters/kword/rtf/import/rtfimport_tokenizer.cpp koffice-1.4.1/filters/kword/rtf/import/rtfimport_tokenizer.cpp +--- koffice-1.4.1.orig/filters/kword/rtf/import/rtfimport_tokenizer.cpp 2005-07-19 16:09:11.000000000 +0200 ++++ koffice-1.4.1/filters/kword/rtf/import/rtfimport_tokenizer.cpp 2005-10-08 10:17:14.000000000 +0200 +@@ -16,7 +16,7 @@ + + RTFTokenizer::RTFTokenizer() + { +- tokenText.resize( 4112 ); ++ tokenText.resize( 4113 ); + fileBuffer.resize( 4096 ); + infile = 0L; + } +@@ -30,8 +30,25 @@ + fileBufferPtr = 0L; + fileBufferEnd = 0L; + infile = in; ++ type = RTFTokenizer::PlainText; + } + ++int RTFTokenizer::nextChar() ++{ ++ if ( fileBufferPtr == fileBufferEnd ) { ++ int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); ++ fileBufferPtr = ( uchar* ) fileBuffer.data(); ++ fileBufferEnd = fileBufferPtr; ++ ++ if ( n <= 0 ) ++ return -1; ++ ++ fileBufferEnd = fileBufferPtr + n; ++ } ++ return *fileBufferPtr++; ++} ++ ++ + /** + * Reads the next token. + */ +@@ -42,22 +59,15 @@ + if (!infile) + return; + +- do +- { +- if (fileBufferPtr == fileBufferEnd) +- { +- int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); ++ do { ++ int n = nextChar(); + +- if (n <= 0) +- { +- // Return CloseGroup on EOF +- ch = '}'; +- break; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); +- } +- ch = *fileBufferPtr++; ++ if ( n <= 0 ) { ++ ch = '}'; ++ break; ++ } ++ ++ ch = n; + } + while (ch == '\n' || ch == '\r' && ch != 0); + +@@ -67,6 +77,7 @@ + + uchar *_text = (uchar *)text; + ++ + if (ch == '{') + type = RTFTokenizer::OpenGroup; + else if (ch == '}') +@@ -75,20 +86,14 @@ + { + type = RTFTokenizer::ControlWord; + +- if (fileBufferPtr == fileBufferEnd) +- { +- int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); ++ int n = nextChar(); + +- if (n <= 0) +- { +- // Return CloseGroup on EOF +- type = RTFTokenizer::CloseGroup; +- return; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); +- } +- ch = *fileBufferPtr++; ++ if ( n <= 0 ) { ++ // Return CloseGroup on EOF ++ type = RTFTokenizer::CloseGroup; ++ return; ++ } ++ ch = n; + + // Type is either control word or control symbol + if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) +@@ -96,64 +101,41 @@ + int v = 0; + + // Read alphabetic string (command) +- while ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) ++ while (_text < ( uchar* )tokenText.data()+tokenText.size()-3 && ++ ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) ) + { + *_text++ = ch; + +- if (fileBufferPtr == fileBufferEnd) +- { +- int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); +- +- if (n <= 0) +- { +- ch = ' '; +- break; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); +- } +- ch = *fileBufferPtr++; ++ int n = nextChar(); ++ if ( n <= 0 ) { ++ ch = ' '; ++ break; ++ } ++ ch = n; + } + + // Read numeric parameter (param) + bool isneg = (ch == '-'); + +- if (isneg) +- { +- if (fileBufferPtr == fileBufferEnd) +- { +- int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); +- +- if (n <= 0) +- { +- // Return CloseGroup on EOF +- type = RTFTokenizer::CloseGroup; +- return; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); +- } +- ch = *fileBufferPtr++; ++ if (isneg) { ++ int n = nextChar(); ++ if ( n <= 0 ) { ++ type = RTFTokenizer::CloseGroup; ++ return; ++ } ++ ch = n; + } +- while (ch >= '0' && ch <= '9') +- { ++ ++ while (ch >= '0' && ch <= '9') { + v = (10 * v) + ch - '0'; + hasParam = true; + +- if (fileBufferPtr == fileBufferEnd) +- { +- int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); +- +- if (n <= 0) +- { +- ch = ' '; +- break; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); +- } +- ch = *fileBufferPtr++; +- } ++ int n = nextChar(); ++ ++ if ( n <= 0 ) ++ n = ' '; ++ ch = n; ++ } + value = isneg ? -v : v; + + // If delimiter is a space, it's part of the control word +@@ -163,7 +145,7 @@ + } + + *_text = 0; // Just put an end of string for the test, it can then be over-written again +- if ( !qstrncmp( tokenText.data()+1, "bin", 4 ) ) // Test the NULL too to avoid catching keywords starting with "bin" ++ if ( !memcmp( tokenText.data()+1, "bin", 4 ) ) + { // We have \bin, so we need to read the bytes + kdDebug(30515) << "Token:" << tokenText << endl; + if (value > 0) +@@ -173,26 +155,15 @@ + binaryData.resize(value); + for (int i=0; i<value; i++) + { +- if (fileBufferPtr == fileBufferEnd) +- { +- const int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); +- +- if (n <= 0) +- { +- kdError(30515) << "\\bin stream hit end of file." << endl; +- type = RTFTokenizer::CloseGroup; +- break; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); ++ int n = nextChar(); ++ if ( n <= 0 ) { ++ type = RTFTokenizer::CloseGroup; ++ break; + } +- binaryData[i]=*fileBufferPtr++; ++ ++ binaryData[i] = n; + } + } +- else +- { +- kdError(30515) << "\\bin with negative value skipping" << endl; +- } + } + + } +@@ -200,19 +171,13 @@ + { + type = RTFTokenizer::ControlWord; + *_text++ = ch; +- if (fileBufferPtr == fileBufferEnd) +- { +- int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); + +- if (n <= 0) +- { +- // Return CloseGroup on EOF +- type = RTFTokenizer::CloseGroup; +- return; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); +- } ++ int n = nextChar(); ++ ++ if ( n <= 0 ) { ++ type = RTFTokenizer::CloseGroup; ++ return; ++ } + ch = *fileBufferPtr++; + for(int i=0;i<2;i++) + { +@@ -220,22 +185,16 @@ + value<<=4; + value=value|((ch + ((ch & 16) ? 0 : 9)) & 0xf); + +- if (fileBufferPtr == fileBufferEnd) +- { +- int n = infile->readBlock( fileBuffer.data(), fileBuffer.size() ); +- +- if (n <= 0) +- { +- ch = ' '; +- break; +- } +- fileBufferPtr = (uchar *)fileBuffer.data(); +- fileBufferEnd = (fileBufferPtr + n); +- } ++ int n = nextChar(); ++ ++ if ( n <= 0 ) { ++ ch = ' '; ++ break; ++ } + ch = *fileBufferPtr++; + } +- --fileBufferPtr; +- } ++ --fileBufferPtr; ++ } + else + { + type = RTFTokenizer::ControlWord; +@@ -248,14 +207,16 @@ + + // Everything until next backslash, opener or closer + while ( ch != '\\' && ch != '{' && ch != '}' && ch != '\n' && +- ch != '\r' && fileBufferPtr <= fileBufferEnd ) ++ ch != '\r') + { + *_text++ = ch; ++ if(fileBufferPtr >= fileBufferEnd) ++ break; + ch = *fileBufferPtr++; + } +- +- // Give back last char +- --fileBufferPtr; ++ if(fileBufferPtr < fileBufferEnd) ++ --fileBufferPtr; // give back the last char + } + *_text++ = 0; ++ + } +diff -Nur koffice-1.4.1.orig/filters/kword/rtf/import/rtfimport_tokenizer.h koffice-1.4.1/filters/kword/rtf/import/rtfimport_tokenizer.h +--- koffice-1.4.1.orig/filters/kword/rtf/import/rtfimport_tokenizer.h 2005-07-19 16:09:11.000000000 +0200 ++++ koffice-1.4.1/filters/kword/rtf/import/rtfimport_tokenizer.h 2005-10-08 10:17:14.000000000 +0200 +@@ -50,6 +50,8 @@ + + // tokenizer (private) data + private: ++ int nextChar(); ++ + QFile *infile; + QByteArray fileBuffer; + QCString tokenText; diff --git a/app-office/kword/kword-1.4.1-r1.ebuild b/app-office/kword/kword-1.4.1-r1.ebuild new file mode 100644 index 000000000000..56edef90b495 --- /dev/null +++ b/app-office/kword/kword-1.4.1-r1.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-office/kword/kword-1.4.1-r1.ebuild,v 1.1 2005/10/10 22:10:08 greg_g Exp $ + +KMNAME=koffice +MAXKOFFICEVER=${PV} +inherit kde-meta eutils + +DESCRIPTION="KOffice word processor." +HOMEPAGE="http://www.koffice.org/" +LICENSE="GPL-2 LGPL-2" + +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="" + +RDEPEND="$(deprange $PV $MAXKOFFICEVER app-office/koffice-libs) + $(deprange $PV $MAXKOFFICEVER app-office/kspread) + >=app-text/wv2-0.1.8 + >=media-gfx/imagemagick-5.5.2" + +DEPEND="${RDEPEND} + dev-util/pkgconfig" + +KMCOPYLIB=" + libkformula lib/kformula + libkofficecore lib/kofficecore + libkofficeui lib/kofficeui + libkopainter lib/kopainter + libkoscript lib/koscript + libkotext lib/kotext + libkwmf lib/kwmf + libkowmf lib/kwmf + libkstore lib/store + libkspreadcommon kspread" + +KMEXTRACTONLY=" + lib/ + kspread/" + +KMCOMPILEONLY="filters/liboofilter" + +KMEXTRA="filters/kword" + +need-kde 3.3 + +src_unpack() { + kde-meta_src_unpack unpack + + # Fix RTF import buffer overflow. Applied in 1.4.2. + epatch "${FILESDIR}/koffice-1.4.1-rtfimport.patch" + + # We need to compile liboofilter first + echo "SUBDIRS = liboofilter kword" > $S/filters/Makefile.am + + kde-meta_src_unpack makefiles +} diff --git a/app-office/kword/kword-1.4.2.ebuild b/app-office/kword/kword-1.4.2.ebuild new file mode 100644 index 000000000000..bc4cad24f030 --- /dev/null +++ b/app-office/kword/kword-1.4.2.ebuild @@ -0,0 +1,54 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-office/kword/kword-1.4.2.ebuild,v 1.1 2005/10/10 22:10:08 greg_g Exp $ + +KMNAME=koffice +MAXKOFFICEVER=${PV} +inherit kde-meta eutils + +DESCRIPTION="KOffice word processor." +HOMEPAGE="http://www.koffice.org/" +LICENSE="GPL-2 LGPL-2" + +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="" + +RDEPEND="$(deprange $PV $MAXKOFFICEVER app-office/koffice-libs) + $(deprange $PV $MAXKOFFICEVER app-office/kspread) + >=app-text/wv2-0.1.8 + >=media-gfx/imagemagick-5.5.2" + +DEPEND="${RDEPEND} + dev-util/pkgconfig" + +KMCOPYLIB=" + libkformula lib/kformula + libkofficecore lib/kofficecore + libkofficeui lib/kofficeui + libkopainter lib/kopainter + libkoscript lib/koscript + libkotext lib/kotext + libkwmf lib/kwmf + libkowmf lib/kwmf + libkstore lib/store + libkspreadcommon kspread" + +KMEXTRACTONLY=" + lib/ + kspread/" + +KMCOMPILEONLY="filters/liboofilter" + +KMEXTRA="filters/kword" + +need-kde 3.3 + +src_unpack() { + kde-meta_src_unpack unpack + + # We need to compile liboofilter first + echo "SUBDIRS = liboofilter kword" > $S/filters/Makefile.am + + kde-meta_src_unpack makefiles +} |