diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-07-17 10:11:34 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-08-06 12:56:29 +0200 |
commit | 3bc3656c0e305ac211ed84ed8e310c0aaa899563 (patch) | |
tree | bba09c300150d5bd0771374e4ade11d0f4f10573 /filter | |
parent | a95100b3258d0016107fbaef576f5e94b3dd4bc5 (diff) |
don't loop forever if pcx has short read
Change-Id: I638792417924bcb8e48995f4e789f84a2cbf4757
(cherry picked from commit c9ba7a2a4d29af2542f31562cfdd64db2237aea8)
Reviewed-on: https://gerrit.libreoffice.org/17157
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.pcx | bin | 0 -> 897 bytes | |||
-rw-r--r-- | filter/source/graphicfilter/ipcx/ipcx.cxx | 4 |
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 Binary files differnew file mode 100644 index 000000000000..73798ea56160 --- /dev/null +++ b/filter/qa/cppunit/data/pcx/fail/hang-1.pcx diff --git a/filter/source/graphicfilter/ipcx/ipcx.cxx b/filter/source/graphicfilter/ipcx/ipcx.cxx index 61b7fa6f9631..8a5ddb3f3718 100644 --- a/filter/source/graphicfilter/ipcx/ipcx.cxx +++ b/filter/source/graphicfilter/ipcx/ipcx.cxx @@ -224,7 +224,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; @@ -248,7 +248,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 ) |