Resolves: rhbz#650503 Arabic spellchecking crash
This commit is contained in:
		
							parent
							
								
									a744e2346f
								
							
						
					
					
						commit
						a5e8ae46a5
					
				
							
								
								
									
										150
									
								
								backport.rhbz650503.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								backport.rhbz650503.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,150 @@ | ||||
| Index: src/hunspell/affentry.cxx
 | ||||
| ===================================================================
 | ||||
| RCS file: /cvsroot/hunspell/hunspell/src/hunspell/affentry.cxx,v | ||||
| retrieving revision 1.5 | ||||
| diff -u -r1.5 affentry.cxx
 | ||||
| --- src/hunspell/affentry.cxx	27 Apr 2010 15:01:04 -0000	1.5
 | ||||
| +++ src/hunspell/affentry.cxx	8 Nov 2010 11:36:57 -0000
 | ||||
| @@ -106,7 +106,7 @@
 | ||||
|                  pos = NULL; | ||||
|                  p = nextchar(p); | ||||
|                  // skip the next character | ||||
| -                if (!ingroup) for (st++; (opts & aeUTF8) && (*st & 0xc0) == 0x80; st++);
 | ||||
| +                if (!ingroup && *st) for (st++; (opts & aeUTF8) && (*st & 0xc0) == 0x80; st++);
 | ||||
|                  if (*st == '\0' && p) return 0; // word <= condition | ||||
|                  break; | ||||
|              } | ||||
| Index: src/hunspell/hunspell.cxx
 | ||||
| ===================================================================
 | ||||
| RCS file: /cvsroot/hunspell/hunspell/src/hunspell/hunspell.cxx,v | ||||
| retrieving revision 1.23 | ||||
| diff -u -r1.23 hunspell.cxx
 | ||||
| --- src/hunspell/hunspell.cxx	3 Nov 2010 16:08:04 -0000	1.23
 | ||||
| +++ src/hunspell/hunspell.cxx	8 Nov 2010 11:36:58 -0000
 | ||||
| @@ -570,6 +570,11 @@
 | ||||
|       word = w2; | ||||
|    } else word = w; | ||||
|   | ||||
| +  len = strlen(word);
 | ||||
| +
 | ||||
| +  if (!len)
 | ||||
| +      return NULL;
 | ||||
| +
 | ||||
|    // word reversing wrapper for complex prefixes | ||||
|    if (complexprefixes) { | ||||
|      if (word != w2) { | ||||
| @@ -607,7 +612,6 @@
 | ||||
|    // check with affixes | ||||
|    if (!he && pAMgr) { | ||||
|       // try stripping off affixes */ | ||||
| -     len = strlen(word);
 | ||||
|       he = pAMgr->affix_check(word, len, 0); | ||||
|   | ||||
|       // check compound restriction and onlyupcase | ||||
| Index: tests/Makefile.am
 | ||||
| ===================================================================
 | ||||
| RCS file: /cvsroot/hunspell/hunspell/tests/Makefile.am,v | ||||
| retrieving revision 1.4 | ||||
| diff -u -r1.4 Makefile.am
 | ||||
| --- tests/Makefile.am	7 Oct 2010 21:05:49 -0000	1.4
 | ||||
| +++ tests/Makefile.am	8 Nov 2010 11:36:58 -0000
 | ||||
| @@ -101,7 +101,8 @@
 | ||||
|  fullstrip.test \ | ||||
|  iconv.test \ | ||||
|  oconv.test \ | ||||
| -korean.test
 | ||||
| +korean.test \
 | ||||
| +arabic.test
 | ||||
|  # infixes.test | ||||
|   | ||||
|  distclean-local: | ||||
| @@ -593,7 +594,10 @@
 | ||||
|  korean.dic \ | ||||
|  korean.good \ | ||||
|  korean.wrong \ | ||||
| -korean.test
 | ||||
| +korean.test \
 | ||||
| +arabic.aff \
 | ||||
| +arabic.dic \
 | ||||
| +arabic.bad
 | ||||
|  # infixes.aff | ||||
|  # infixes.dic | ||||
|  # infixes.good | ||||
| Index: tests/Makefile.in
 | ||||
| ===================================================================
 | ||||
| RCS file: /cvsroot/hunspell/hunspell/tests/Makefile.in,v | ||||
| retrieving revision 1.8 | ||||
| diff -u -r1.8 Makefile.in
 | ||||
| --- tests/Makefile.in	7 Oct 2010 21:05:49 -0000	1.8
 | ||||
| +++ tests/Makefile.in	8 Nov 2010 11:36:58 -0000
 | ||||
| @@ -283,6 +283,7 @@
 | ||||
|  SUBDIRS = suggestiontest | ||||
|  XFAIL_TESTS = @XFAILED@ | ||||
|  TESTS = \ | ||||
| +arabic.test \
 | ||||
|  affixes.test \ | ||||
|  condition.test \ | ||||
|  condition_utf.test \ | ||||
| @@ -379,7 +380,8 @@
 | ||||
|  fullstrip.test \ | ||||
|  iconv.test \ | ||||
|  oconv.test \ | ||||
| -korean.test
 | ||||
| +korean.test \
 | ||||
| +arabic.test
 | ||||
|   | ||||
|  EXTRA_DIST = \ | ||||
|  test.sh \ | ||||
| @@ -867,7 +869,10 @@
 | ||||
|  korean.dic \ | ||||
|  korean.good \ | ||||
|  korean.wrong \ | ||||
| -korean.test
 | ||||
| +korean.test \
 | ||||
| +arabic.aff \
 | ||||
| +arabic.dic \
 | ||||
| +arabic.bad
 | ||||
|   | ||||
|  all: all-recursive | ||||
|   | ||||
| Index: arabic.test
 | ||||
| ===================================================================
 | ||||
| RCS file: arabic.test | ||||
| diff -N arabic.test
 | ||||
| --- /dev/null	1 Jan 1970 00:00:00 -0000
 | ||||
| +++ tests/arabic.test	8 Nov 2010 11:41:33 -0000
 | ||||
| @@ -0,0 +1,4 @@
 | ||||
| +#!/bin/sh
 | ||||
| +DIR="`dirname $0`"
 | ||||
| +NAME="`basename $0 .test`"
 | ||||
| +$DIR/test.sh $NAME -i UTF-8
 | ||||
| Index: arabic.bad
 | ||||
| ===================================================================
 | ||||
| RCS file: arabic.bad | ||||
| diff -N arabic.bad
 | ||||
| --- /dev/null	1 Jan 1970 00:00:00 -0000
 | ||||
| +++ tests/arabic.bad	8 Nov 2010 11:41:59 -0000
 | ||||
| @@ -0,0 +1 @@
 | ||||
| +ـ
 | ||||
| Index: arabic.dic
 | ||||
| ===================================================================
 | ||||
| RCS file: arabic.dic | ||||
| diff -N arabic.dic
 | ||||
| --- /dev/null	1 Jan 1970 00:00:00 -0000
 | ||||
| +++ tests/arabic.dic	8 Nov 2010 11:42:15 -0000
 | ||||
| @@ -0,0 +1,2 @@
 | ||||
| +1
 | ||||
| +ب
 | ||||
| Index: arabic.aff
 | ||||
| ===================================================================
 | ||||
| RCS file: arabic.aff | ||||
| diff -N arabic.aff
 | ||||
| --- /dev/null	1 Jan 1970 00:00:00 -0000
 | ||||
| +++ tests/arabic.aff	8 Nov 2010 11:42:27 -0000
 | ||||
| @@ -0,0 +1,6 @@
 | ||||
| +SET UTF-8
 | ||||
| +TRY أ
 | ||||
| +IGNORE ٌٍَُِّْ
 | ||||
| +
 | ||||
| +PFX	Aa	Y	1
 | ||||
| +PFX	Aa	0	0/X0	أ[^ي]
 | ||||
| @ -3,7 +3,7 @@ | ||||
| Name:      hunspell | ||||
| Summary:   A spell checker and morphological analyzer library | ||||
| Version:   1.2.12 | ||||
| Release:   2%{?dist} | ||||
| Release:   3%{?dist} | ||||
| Source:    http://downloads.sourceforge.net/%{name}/hunspell-%{version}.tar.gz | ||||
| Group:     System Environment/Libraries | ||||
| URL:       http://hunspell.sourceforge.net/ | ||||
| @ -17,6 +17,7 @@ BuildRequires: valgrind | ||||
| BuildRequires: words | ||||
| %endif | ||||
| Patch1: backport.warnings.patch | ||||
| Patch2: backport.rhbz650503.patch | ||||
| 
 | ||||
| %description | ||||
| Hunspell is a spell checker and morphological analyzer library and program  | ||||
| @ -35,6 +36,8 @@ Includes and definitions for developing with hunspell | ||||
| %prep | ||||
| %setup -q | ||||
| %patch1 -p0 -b .backport.warnings | ||||
| %patch2 -p0 -b .backport.rhbz650503 | ||||
| chmod u+x tests/arabic.test | ||||
| 
 | ||||
| %build | ||||
| configureflags="--disable-rpath --disable-static --with-ui --with-readline" | ||||
| @ -123,6 +126,9 @@ rm -rf $RPM_BUILD_ROOT | ||||
| %{_mandir}/man3/hunspell.3.gz | ||||
| 
 | ||||
| %changelog | ||||
| * Mon Nov 08 2010 Caolán McNamara <caolanm@redhat.com> - 1.2.12-3 | ||||
| - Resolves: rhbz#650503 Arabic spellchecking crash | ||||
| 
 | ||||
| * Fri Nov 05 2010 Caolán McNamara <caolanm@redhat.com> - 1.2.12-2 | ||||
| - Resolves: rhbz#648740 thousands of trailing empty rules spew | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user