summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-07-17 10:11:34 +0100
committerDavid Tardon <dtardon@redhat.com>2015-07-17 12:21:27 +0000
commitf45821e73e4db672c013d9c71816c1d36c421873 (patch)
treeb185131c735c5937f87b70d71e7bb9ae7ba9af47 /filter
parentce52c9dcc3eaec8c8e4c72b1c5933d3ca2fbb384 (diff)
don't loop forever if pcx has short read
Change-Id: I638792417924bcb8e48995f4e789f84a2cbf4757 (cherry picked from commit c9ba7a2a4d29af2542f31562cfdd64db2237aea8) Reviewed-on: https://gerrit.libreoffice.org/17159 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/qa/cppunit/data/pcx/fail/hang-1.pcxbin0 -> 897 bytes
-rw-r--r--filter/source/graphicfilter/ipcx/ipcx.cxx4
2 files changed, 2 insertions, 2 deletions
diff --git a/filter/qa/cppunit/data/pcx/fail/hang-1.pcx b/filter/qa/cppunit/data/pcx/fail/hang-1.pcx
new file mode 100644
index 000000000000..73798ea56160
--- /dev/null
+++ b/filter/qa/cppunit/data/pcx/fail/hang-1.pcx
Binary files differ
diff --git a/filter/source/graphicfilter/ipcx/ipcx.cxx b/filter/source/graphicfilter/ipcx/ipcx.cxx
index 0960493291d4..f5326fe57019 100644
--- a/filter/source/graphicfilter/ipcx/ipcx.cxx
+++ b/filter/source/graphicfilter/ipcx/ipcx.cxx
@@ -230,7 +230,7 @@ void PCXReader::ImplReadBody(BitmapWriteAccess * pAcc)
nCount = 0;
for ( ny = 0; ny < nHeight; ny++ )
{
- if (m_rPCX.GetError() || m_rPCX.IsEof())
+ if (!m_rPCX.good())
{
nStatus = false;
break;
@@ -256,7 +256,7 @@ void PCXReader::ImplReadBody(BitmapWriteAccess * pAcc)
nx--;
nCount--;
}
- while ( nx > 0 )
+ while (nx > 0 && m_rPCX.good())
{
m_rPCX.ReadUChar( nDat );
if ( ( nDat & 0xc0 ) == 0xc0 )