[Libreoffice-commits] core.git: 2 commits - i18npool/source
David Tardon
dtardon at redhat.com
Wed Oct 15 08:08:36 PDT 2014
i18npool/source/breakiterator/xdictionary.cxx | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
New commits:
commit 1ad97f9b803d07702d52f44b2d6ce7235ff9400a
Author: David Tardon <dtardon at redhat.com>
Date: Wed Oct 15 17:05:33 2014 +0200
avoid out-of-bounds access when iterating code points
Change-Id: I583e49180b37705ea124c0d88c2e2a8cb1470dfe
diff --git a/i18npool/source/breakiterator/xdictionary.cxx b/i18npool/source/breakiterator/xdictionary.cxx
index 567a2db..6f7c196 100644
--- a/i18npool/source/breakiterator/xdictionary.cxx
+++ b/i18npool/source/breakiterator/xdictionary.cxx
@@ -403,7 +403,9 @@ WordBreakCache& xdictionary::getCache(const sal_Unicode *text, Boundary& wordBou
Boundary xdictionary::previousWord(const OUString& rText, sal_Int32 anyPos, sal_Int16 wordType)
{
// looking for the first non-whitespace character from anyPos
- sal_uInt32 ch = rText.iterateCodePoints(&anyPos, -1);
+ sal_uInt32 ch = 0;
+ if (anyPos > 0)
+ rText.iterateCodePoints(&anyPos, -1);
while (anyPos > 0 && u_isWhitespace(ch)) ch = rText.iterateCodePoints(&anyPos, -1);
commit 4a97029ce71262395620b71633b309f3e6bb6f54
Author: David Tardon <dtardon at redhat.com>
Date: Wed Oct 15 17:02:59 2014 +0200
avoid out-of-bounds access when iterating code points
Change-Id: I88290e5ccfd6ab250fe1526e452609e6de020dcd
diff --git a/i18npool/source/breakiterator/xdictionary.cxx b/i18npool/source/breakiterator/xdictionary.cxx
index b930f46..567a2db 100644
--- a/i18npool/source/breakiterator/xdictionary.cxx
+++ b/i18npool/source/breakiterator/xdictionary.cxx
@@ -414,11 +414,13 @@ Boundary xdictionary::nextWord(const OUString& rText, sal_Int32 anyPos, sal_Int1
{
boundary = getWordBoundary(rText, anyPos, wordType, true);
anyPos = boundary.endPos;
- if (anyPos < rText.getLength()) {
+ const sal_Int32 nLen = rText.getLength();
+ if (anyPos < nLen) {
// looknig for the first non-whitespace character from anyPos
sal_uInt32 ch = rText.iterateCodePoints(&anyPos, 1);
- while (u_isWhitespace(ch)) ch=rText.iterateCodePoints(&anyPos, 1);
- rText.iterateCodePoints(&anyPos, -1);
+ while (u_isWhitespace(ch) && (anyPos < nLen)) ch=rText.iterateCodePoints(&anyPos, 1);
+ if (anyPos > 0)
+ rText.iterateCodePoints(&anyPos, -1);
}
return getWordBoundary(rText, anyPos, wordType, true);
More information about the Libreoffice-commits
mailing list