about summary refs log tree commit diff
path: root/converter
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2023-09-30 20:17:25 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2023-09-30 20:17:25 +0000
commit36337c4f4249c002177cdc9ca3bc62aadf74168e (patch)
treebf3d8c8630aacdae8aa97d7e06a10c2e3c1983ad /converter
parent926844a34eda7f4406b2bf835613095d8dd061c5 (diff)
downloadnetpbm-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.c7
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",