diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2023-09-30 20:17:25 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2023-09-30 20:17:25 +0000 |
commit | 36337c4f4249c002177cdc9ca3bc62aadf74168e (patch) | |
tree | bf3d8c8630aacdae8aa97d7e06a10c2e3c1983ad /converter | |
parent | 926844a34eda7f4406b2bf835613095d8dd061c5 (diff) | |
download | netpbm-mirror-36337c4f4249c002177cdc9ca3bc62aadf74168e.tar.gz netpbm-mirror-36337c4f4249c002177cdc9ca3bc62aadf74168e.tar.xz netpbm-mirror-36337c4f4249c002177cdc9ca3bc62aadf74168e.zip |
Fix arithmetic overrun
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@4711 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'converter')
-rw-r--r-- | converter/ppm/ppmtopict.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/converter/ppm/ppmtopict.c b/converter/ppm/ppmtopict.c index 749ef305..c7f1d61d 100644 --- a/converter/ppm/ppmtopict.c +++ b/converter/ppm/ppmtopict.c @@ -387,6 +387,13 @@ writeRaster(FILE * const ofP, unsigned int oc; unsigned int row; + if (cols > UINT_MAX - cols/MAX_COUNT - 1) { + /* We can't compute the size of buffer 'putRow' needs for worst-case + compaction. + */ + pm_error("Image is too wide (%u columns) for computation", cols); + } + MALLOCARRAY(outBuf, cols + cols/MAX_COUNT + 1); if (!outBuf) pm_error("Unable to allocate %u-byte row buffer", |