diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2021-11-07 01:32:55 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2021-11-07 01:32:55 +0000 |
commit | 54081f1e108cb4a385f951cbc293368829e39320 (patch) | |
tree | f100ce9b57442d2b57946a93c854fa0b5fbd0463 /lib | |
parent | 4d5728723616f3713725d85df790666e8d75b963 (diff) | |
download | netpbm-mirror-54081f1e108cb4a385f951cbc293368829e39320.tar.gz netpbm-mirror-54081f1e108cb4a385f951cbc293368829e39320.tar.xz netpbm-mirror-54081f1e108cb4a385f951cbc293368829e39320.zip |
Release 10.96.03
git-svn-id: http://svn.code.sf.net/p/netpbm/code/advanced@4176 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libpbm2.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/libpbm2.c b/lib/libpbm2.c index 2fec4788..a611bec5 100644 --- a/lib/libpbm2.c +++ b/lib/libpbm2.c @@ -216,6 +216,9 @@ pbm_readpbmrow_bitoffset(FILE * const ifP, Read it into packedBits[], preserving surrounding image data. Logic not tested for negative offsets. + + Because we are reading in packed mode large cols and offset values are + acceptable; dividing by 8 prevents overflows. -----------------------------------------------------------------------------*/ unsigned int const rsh = offset % 8; unsigned int const lsh = (8 - rsh) % 8; @@ -224,13 +227,15 @@ pbm_readpbmrow_bitoffset(FILE * const ifP, Aligned to nearest byte boundary to the left, so the first few bits might contain original data, not output. */ - unsigned int const last = pbm_packed_bytes(cols+rsh) - 1; + unsigned int const last = pbm_packed_bytes((unsigned int)cols + rsh) - 1; /* Position within window of rightmost byte after shift */ /* The original leftmost and rightmost chars. */ unsigned char const origHead = window[0]; unsigned char const origEnd = window[last]; + assert(cols > 0 && pbm_packed_bytes(cols) > 0); + pbm_readpbmrow_packed(ifP, window, cols, format); if (rsh > 0) { |