[Libreoffice-commits] core.git: external/hunspell

László Németh nemeth at numbertext.org
Fri Sep 26 07:23:14 PDT 2014


 external/hunspell/UnpackedTarball_hunspell.mk   |    1 
 external/hunspell/hunspell-morph-overflow.patch |   30 ++++++++++++++++++++++++
 2 files changed, 31 insertions(+)

New commits:
commit b37a88c3080fc72f5f0ff9068bc71098be70ed11
Author: László Németh <nemeth at numbertext.org>
Date:   Fri Sep 26 15:54:44 2014 +0200

    Hunspell: fix buffer overflow during morphological analysis
    
    affected: thesaurus usage in a Hungarian document
    
    test case: press Ctrl+F7 on the word "művészegyéniség"
    
    Change-Id: I024568e81265c4ce3e05f718bf9147229416ab73

diff --git a/external/hunspell/UnpackedTarball_hunspell.mk b/external/hunspell/UnpackedTarball_hunspell.mk
index 96c85bb..9acfd95 100644
--- a/external/hunspell/UnpackedTarball_hunspell.mk
+++ b/external/hunspell/UnpackedTarball_hunspell.mk
@@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,hunspell,\
 	external/hunspell/hunspell-1.3.2-nullptr.patch \
 	external/hunspell/hunspell-1.3.2-literal.patch \
 	external/hunspell/hunspell-fdo48017-wfopen.patch \
+	external/hunspell/hunspell-morph-overflow.patch \
 ))
 
 ifeq ($(COM),MSC)
diff --git a/external/hunspell/hunspell-morph-overflow.patch b/external/hunspell/hunspell-morph-overflow.patch
new file mode 100644
index 0000000..fe7c4f7
--- /dev/null
+++ b/external/hunspell/hunspell-morph-overflow.patch
@@ -0,0 +1,30 @@
+--- hunspell/src/hunspell/affixmgr.cxx	2014-09-24 16:11:10.750421303 +0200
++++ build/hunspell/src/hunspell/affixmgr.cxx	2014-09-26 15:25:09.448688908 +0200
+@@ -2400,8 +2400,10 @@
+                       }
+                       mystrcat(*result, presult, MAXLNLEN);
+                       if (m || (*m != '\0')) {
+-                        sprintf(*result + strlen(*result), "%c%s%s%s", MSEP_FLD,
++                        char m2[MAXLNLEN];
++                        sprintf(m2, "%c%s%s%s", MSEP_FLD,
+                             MORPH_PART, word + i, line_uniq_app(&m, MSEP_REC));
++                        mystrcat(*result, m2, MAXLNLEN);
+                       }
+                       if (m) free(m);
+                       mystrcat(*result, "\n", MAXLNLEN);
+@@ -2481,11 +2483,13 @@
+                       }
+                       mystrcat(*result, presult, MAXLNLEN);
+                       if (m && (*m != '\0')) {
+-                        sprintf(*result + strlen(*result), "%c%s%s%s", MSEP_FLD,
++                        char m2[MAXLNLEN];
++                        sprintf(m2, "%c%s%s%s", MSEP_FLD,
+                             MORPH_PART, word + i, line_uniq_app(&m, MSEP_REC));
++                        mystrcat(*result, m2, MAXLNLEN);
+                       }
+                       if (m) free(m);
+-                      sprintf(*result + strlen(*result), "%c", MSEP_REC);
++                      if (strlen(*result) + 1 < MAXLNLEN) sprintf(*result + strlen(*result), "%c", MSEP_REC);
+                       ok = 1;
+             }
+ 


More information about the Libreoffice-commits mailing list