From 8e89c927d9755c1efccdd02df2c6a0074305fff6 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Sat, 19 Jan 2008 19:42:20 +0100 Subject: fix check for too small tables --- src/pnmcurve.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pnmcurve.c b/src/pnmcurve.c index 4ddbc5c..7910536 100644 --- a/src/pnmcurve.c +++ b/src/pnmcurve.c @@ -66,17 +66,17 @@ main(int argc, char **argv) { if (!curve) { usage(); - exit(1); + return 1; } if (readPnmHeader(stdin, &in_pnm) != 0) { fprintf(stderr, "failed to read PNM file\n"); - exit(1); + return 1; } if (in_pnm.maxval != 255 && in_pnm.maxval != 65535) { fprintf(stderr, "unsupported PNM maxval %d\n", in_pnm.maxval); - exit(1); + return 1; } if (channels == 0) channels = RED | GREEN | BLUE; @@ -94,9 +94,7 @@ main(int argc, char **argv) { writePnmHeader(stdout, &in_pnm); - pam_transform(stdin, stdout, &in_pnm, gTable); - - return 0; + return pam_transform(stdin, stdout, &in_pnm, gTable); } static int @@ -107,7 +105,7 @@ pam_transform(FILE *in_fp, FILE *out_fp, unsigned char *buf = malloc(in_pnm->width * nbytes * 3); for (c = 0; c < 3; c++) { - if (tables[c] && tables[c]->n <= in_pnm->maxval) { + if (tables[c] && tables[c]->n < 1 << (nbytes * 8)) { fprintf(stderr, "table %d too small (%d)\n", c, tables[c]->n); return 1; } -- cgit v1.2.3