summaryrefslogtreecommitdiff
path: root/hwpfilter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-02-23 12:17:33 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-02-23 12:18:18 +0000
commita438651d2b94f14a2a0e54024f69280917df37b5 (patch)
tree4ec3c2d6a143505ec59d855e43d4b3637e8caf40 /hwpfilter
parentcd23b010a2531c86ee7ec70c80ca6afb01f85ab8 (diff)
ofz: don't loop endlessly on failed skip
Change-Id: Ibc105d8156e1b1ddf22948fb02165f8d03b4cfd5
Diffstat (limited to 'hwpfilter')
-rw-r--r--hwpfilter/qa/cppunit/data/fail/skipblock-1.hwpbin0 -> 10225 bytes
-rw-r--r--hwpfilter/source/hiodev.cxx8
2 files changed, 6 insertions, 2 deletions
diff --git a/hwpfilter/qa/cppunit/data/fail/skipblock-1.hwp b/hwpfilter/qa/cppunit/data/fail/skipblock-1.hwp
new file mode 100644
index 000000000000..8fd8e7abf9fc
--- /dev/null
+++ b/hwpfilter/qa/cppunit/data/fail/skipblock-1.hwp
Binary files differ
diff --git a/hwpfilter/source/hiodev.cxx b/hwpfilter/source/hiodev.cxx
index 98001e99a6a8..48d105ff23ed 100644
--- a/hwpfilter/source/hiodev.cxx
+++ b/hwpfilter/source/hiodev.cxx
@@ -242,8 +242,12 @@ int HStreamIODev::skipBlock(int size)
else{
int remain = size;
while(remain){
- if( remain > BUFSIZE )
- remain -= GZREAD(rBuf, BUFSIZE);
+ if( remain > BUFSIZE ) {
+ int read = GZREAD(rBuf, BUFSIZE);
+ remain -= read;
+ if (read != BUFSIZE)
+ break;
+ }
else{
remain -= GZREAD(rBuf, remain);
break;