summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-12-02 13:03:48 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-12-02 21:33:25 +0100
commit3fa8ee239b9d2455c0d5dcc016ce973b7f6acf8d (patch)
treef33d850fa19f776e298c0a8a2750724d1a4d3943 /filter
parentd4c22030d7c83de6f1835cdb5d891c2d563c34fd (diff)
ofz#19207 check max strlen possible
Change-Id: I5fe9fde240ef375d9de097dda47953320ecc758d Reviewed-on: https://gerrit.libreoffice.org/84253 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/icgm/class7.cxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/filter/source/graphicfilter/icgm/class7.cxx b/filter/source/graphicfilter/icgm/class7.cxx
index c85e5284e026..8c2478a308ae 100644
--- a/filter/source/graphicfilter/icgm/class7.cxx
+++ b/filter/source/graphicfilter/icgm/class7.cxx
@@ -127,9 +127,11 @@ void CGM::ImplDoClass7()
nAttributes >>= 12;
pTextEntry->nAttributes = nAttributes;
pAppData += 8;
- sal_uInt32 nLen = strlen( reinterpret_cast<char*>( pAppData ) ) + 1;
- pTextEntry->pText = new char[ nLen ];
+ auto nMaxLen = mpEndValidSource - pAppData;
+ sal_uInt32 nLen = strnlen(reinterpret_cast<char*>(pAppData), nMaxLen);
+ pTextEntry->pText = new char[nLen + 1];
memcpy( pTextEntry->pText, pAppData, nLen );
+ pTextEntry->pText[nLen] = 0;
pAppData += nLen;
mpChart->InsertTextEntry( std::move(pTextEntry) );