vcl/source/filter/svm/SvmReader.cxx |   17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

New commits:
commit fc3d76819f2770bef596fcddf6b24df8e1966ece
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Mar 4 11:42:31 2022 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Mar 4 14:44:07 2022 +0100

    clamp in StretchTextHandler like TextHandler
    
    Change-Id: I4e1247ef2945f46cd1e60e9e473c1a589f990bb4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130975
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/source/filter/svm/SvmReader.cxx 
b/vcl/source/filter/svm/SvmReader.cxx
index 322484ce4693..cdc731528ffb 100644
--- a/vcl/source/filter/svm/SvmReader.cxx
+++ b/vcl/source/filter/svm/SvmReader.cxx
@@ -728,12 +728,25 @@ rtl::Reference<MetaAction> 
SvmReader::StretchTextHandler(const ImplMetaReadData*
 
     pAction->SetPoint(aPoint);
     pAction->SetWidth(nTmpWidth);
-    pAction->SetIndex(nTmpIndex);
-    pAction->SetLen(nTmpLen);
 
     if (aCompat.GetVersion() >= 2) // Version 2
         aStr = read_uInt16_lenPrefixed_uInt16s_ToOUString(mrStream);
 
+    if (nTmpIndex > aStr.getLength())
+    {
+        SAL_WARN("vcl.gdi", "inconsistent offset");
+        nTmpIndex = aStr.getLength();
+    }
+
+    if (nTmpLen > aStr.getLength() - nTmpIndex)
+    {
+        SAL_WARN("vcl.gdi", "inconsistent len");
+        nTmpLen = aStr.getLength() - nTmpIndex;
+    }
+
+    pAction->SetIndex(nTmpIndex);
+    pAction->SetLen(nTmpLen);
+
     pAction->SetText(aStr);
 
     return pAction;

Reply via email to