diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-03-12 11:35:37 +0000 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-04-07 17:46:34 +0200 |
commit | 949ab164aca33312694cdbf0932c22992cf53dc6 (patch) | |
tree | 7ab0033e13a733cb1a1db51de1b239706c74c76d | |
parent | d7ccd89256317c475ff2adefb06a02a8fcb91d3b (diff) |
forcepoint #25 ensure null termination
Change-Id: I37f4787fb5772e959c45280d9650adcc15591033
Reviewed-on: https://gerrit.libreoffice.org/51130
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
(cherry picked from commit 5a6a1e932f2efe9646d927f20b2cca9ca12a3a70)
-rw-r--r-- | vcl/unx/generic/printer/jobdata.cxx | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/vcl/unx/generic/printer/jobdata.cxx b/vcl/unx/generic/printer/jobdata.cxx index b9359429fd8a..89673ba05b34 100644 --- a/vcl/unx/generic/printer/jobdata.cxx +++ b/vcl/unx/generic/printer/jobdata.cxx @@ -274,11 +274,15 @@ bool JobData::constructFromStreamBuffer( const void* pData, sal_uInt32 bytes, Jo if( rJobData.m_pParser ) { rJobData.m_aContext.setParser( rJobData.m_pParser ); - const sal_uInt64 nBytes = bytes - aStream.Tell(); - std::unique_ptr<char[]> pRemain(new char[bytes - aStream.Tell()]); - aStream.ReadBytes( pRemain.get(), nBytes ); - rJobData.m_aContext.rebuildFromStreamBuffer( pRemain.get(), nBytes ); - bContext = true; + sal_uInt64 nBytes = bytes - aStream.Tell(); + std::vector<char> aRemain(nBytes+1); + nBytes = aStream.ReadBytes(aRemain.data(), nBytes); + if (nBytes) + { + aRemain[nBytes] = 0; + rJobData.m_aContext.rebuildFromStreamBuffer(aRemain.data(), nBytes); + bContext = true; + } } } } |