Introduction
Introduction Statistics Contact Development Disclaimer Help
Prevent overflow in rowlen and improve inaccuracies in style - farbfeld - suckl…
git clone git://git.suckless.org/farbfeld
Log
Files
Refs
README
LICENSE
---
commit e637aae67ededf6a4a0b4d490d02f3294f297b71
parent 49cef794d9cef3c1ab8478963a7f778c8c28eb70
Author: FRIGN <[email protected]>
Date: Fri, 18 Mar 2016 19:49:11 +0100
Prevent overflow in rowlen and improve inaccuracies in style
Diffstat:
M ff2png.c | 6 +++++-
M jpg2ff.c | 5 ++---
M png2ff.c | 11 +++++++----
3 files changed, 14 insertions(+), 8 deletions(-)
---
diff --git a/ff2png.c b/ff2png.c
@@ -61,7 +61,11 @@ main(int argc, char *argv[])
png_write_info(pngs, pngi);
/* write rows */
- rowlen = (sizeof("RGBA") - 1) * width;
+ if (width > SIZE_MAX / ((sizeof("RGBA") - 1) * sizeof(uint16_t))) {
+ fprintf(stderr, "%s: row length integer overflow\n", argv0);
+ return 1;
+ }
+ rowlen = width * (sizeof("RGBA") - 1);
if (!(row = malloc(rowlen * sizeof(uint16_t)))) {
fprintf(stderr, "%s: malloc: out of memory\n", argv0);
return 1;
diff --git a/jpg2ff.c b/jpg2ff.c
@@ -5,7 +5,6 @@
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <jpeglib.h>
@@ -58,7 +57,7 @@ main(int argc, char *argv[])
jpgrow = (*js.mem->alloc_sarray)((j_common_ptr)&js,
JPOOL_IMAGE, width *
js.output_components, 1);
- rowlen = strlen("RGBA") * width;
+ rowlen = width * (sizeof("RGBA") - 1);
if(!(row = malloc(rowlen * sizeof(uint16_t)))) {
fprintf(stderr, "%s: malloc: out of memory\n", argv0);
return 1;
@@ -89,7 +88,7 @@ main(int argc, char *argv[])
}
/* write data */
- if (fwrite(row, 2, rowlen, stdout) != rowlen)
+ if (fwrite(row, sizeof(uint16_t), rowlen, stdout) != rowlen)
goto writerr;
}
jpeg_finish_decompress(&js);
diff --git a/png2ff.c b/png2ff.c
@@ -5,7 +5,6 @@
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <png.h>
@@ -57,7 +56,11 @@ main(int argc, char *argv[])
pngrows = png_get_rows(pngs, pngi);
/* allocate output row buffer */
- rowlen = width * strlen("RGBA");
+ if (width > SIZE_MAX / ((sizeof("RGBA") - 1) * sizeof(uint16_t))) {
+ fprintf(stderr, "%s: row length integer overflow\n", argv0);
+ return 1;
+ }
+ rowlen = width * (sizeof("RGBA") - 1);
if (!(row = malloc(rowlen * sizeof(uint16_t)))) {
fprintf(stderr, "%s: malloc: out of memory\n", argv0);
return 1;
@@ -87,8 +90,8 @@ main(int argc, char *argv[])
break;
case 16:
for (r = 0; r < height; ++r) {
- if (fwrite(pngrows[r], sizeof(uint16_t),
- rowlen, stdout) != rowlen) {
+ if (fwrite(pngrows[r], sizeof(uint16_t), rowlen,
+ stdout) != rowlen) {
goto writerr;
}
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.