Remove dimension checks - farbfeld - suckless image format with conversion tools | |
git clone git://git.suckless.org/farbfeld | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 96faf20b1bcef354e6b1fd03a26c286070c52e74 | |
parent d8796e33f347b92a6526a1f3e6da8f5ddae7391b | |
Author: FRIGN <[email protected]> | |
Date: Sun, 10 Apr 2016 22:54:42 +0200 | |
Remove dimension checks | |
This may come as a surprise, but I'd like the libraries to handle | |
these cases. | |
Maybe some day libpng supports 0x0 images, so why impose artificial | |
limits here? | |
Same with ppm. | |
For me, an ideal data converter loses as little information as possible. | |
In mixed cases (dimensions 0xn, where n > 0) we could print a warning, | |
but here, 2 principles come at play: | |
- GIGO (garbage in, garbage out) | |
- no information loss if possible | |
Given the code later on won't try to access the malloc(0) region, we | |
are also all safe. | |
Diffstat: | |
M ff2jpg.c | 10 ++-------- | |
M ff2ppm.c | 10 ++-------- | |
2 files changed, 4 insertions(+), 16 deletions(-) | |
--- | |
diff --git a/ff2jpg.c b/ff2jpg.c | |
@@ -87,14 +87,8 @@ main(int argc, char *argv[]) | |
fprintf(stderr, "%s: invalid magic value\n", argv0); | |
return 1; | |
} | |
- if (!(width = ntohl(hdr[2]))) { | |
- fprintf(stderr, "%s: invalid width: zero\n", argv0); | |
- return 1; | |
- } | |
- if (!(height = ntohl(hdr[3]))) { | |
- fprintf(stderr, "%s: invalid height: zero\n", argv0); | |
- return 1; | |
- } | |
+ width = ntohl(hdr[2]); | |
+ height = ntohl(hdr[3]); | |
if (width > SIZE_MAX / ((sizeof("RGBA") - 1) * sizeof(uint16_t))) { | |
fprintf(stderr, "%s: row length integer overflow\n", argv0); | |
diff --git a/ff2ppm.c b/ff2ppm.c | |
@@ -67,14 +67,8 @@ main(int argc, char *argv[]) | |
fprintf(stderr, "%s: invalid magic value\n", argv0); | |
return 1; | |
} | |
- if (!(width = ntohl(hdr[2]))) { | |
- fprintf(stderr, "%s: invalid width: zero\n", argv0); | |
- return 1; | |
- } | |
- if (!(height = ntohl(hdr[3]))) { | |
- fprintf(stderr, "%s: invalid height: zero\n", argv0); | |
- return 1; | |
- } | |
+ width = ntohl(hdr[2]); | |
+ height = ntohl(hdr[3]); | |
if (width > SIZE_MAX / ((sizeof("RGBA") - 1) * sizeof(uint16_t))) { | |
fprintf(stderr, "%s: row length integer overflow\n", argv0); |