diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-02-23 12:17:33 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-02-23 12:18:18 +0000 |
commit | a438651d2b94f14a2a0e54024f69280917df37b5 (patch) | |
tree | 4ec3c2d6a143505ec59d855e43d4b3637e8caf40 /hwpfilter | |
parent | cd23b010a2531c86ee7ec70c80ca6afb01f85ab8 (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.hwp | bin | 0 -> 10225 bytes | |||
-rw-r--r-- | hwpfilter/source/hiodev.cxx | 8 |
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 Binary files differnew file mode 100644 index 000000000000..8fd8e7abf9fc --- /dev/null +++ b/hwpfilter/qa/cppunit/data/fail/skipblock-1.hwp 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; |