vcl/source/gdi/jobset.cxx |    7 +++++++
 1 file changed, 7 insertions(+)

New commits:
commit 9c1f3718d193badaba271a46800ffde8051baf57
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Dec 30 21:19:15 2020 +0000
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Nov 16 14:13:23 2021 +0100

    ofz#29113 short read
    
    Change-Id: I107d8abeac419ba4e70a5880054c9195c60464ad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108527
    Tested-by: Caolán McNamara <caol...@redhat.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    (cherry picked from commit ab3829bf74667044d9b0f5b96903bbafda5171f6)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125281
    Tested-by: Michael Stahl <michael.st...@allotropia.de>
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/vcl/source/gdi/jobset.cxx b/vcl/source/gdi/jobset.cxx
index 95c8669a7f97..6ef1d51b3ff0 100644
--- a/vcl/source/gdi/jobset.cxx
+++ b/vcl/source/gdi/jobset.cxx
@@ -261,6 +261,13 @@ SvStream& ReadJobSetup( SvStream& rIStream, JobSetup& 
rJobSetup )
             if ( nSystem == JOBSET_FILE364_SYSTEM ||
                  nSystem == JOBSET_FILE605_SYSTEM )
             {
+                if (nRead < sizeof(ImplOldJobSetupData) + 
sizeof(Impl364JobSetupData))
+                {
+                    SAL_WARN("vcl", "Parsing error: " << 
sizeof(ImplOldJobSetupData) + sizeof(Impl364JobSetupData) <<
+                             " required, but " << nRead << " available");
+                    return rIStream;
+                }
+
                 Impl364JobSetupData* pOldJobData    = 
reinterpret_cast<Impl364JobSetupData*>(pTempBuf.get() + sizeof( 
ImplOldJobSetupData ));
                 sal_uInt16 nOldJobDataSize          = SVBT16ToShort( 
pOldJobData->nSize );
                 rJobData.SetSystem( SVBT16ToShort( pOldJobData->nSystem ) );

Reply via email to