aboutsummaryrefslogtreecommitdiffstats
path: root/src/netpbm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/netpbm.c')
-rw-r--r--src/netpbm.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/netpbm.c b/src/netpbm.c
index f30dbbc..0f5eac2 100644
--- a/src/netpbm.c
+++ b/src/netpbm.c
@@ -41,14 +41,14 @@ struct image *netpbm_open(FILE *f){
b->format = format;
skipspace(f);
- fscanf(f, "%u", &b->img.bufwidth);
+ if(fscanf(f, "%u", &b->img.bufwidth) != 1) goto err;
skipspace(f);
- fscanf(f, "%u", &b->img.bufheight);
+ if(fscanf(f, "%u", &b->img.bufheight) != 1) goto err;
if(format == '1' || format == '4'){
b->maxval = 1;
}else{
skipspace(f);
- fscanf(f, "%u", &b->maxval);
+ if(fscanf(f, "%u", &b->maxval) != 1) goto err;
}
/* whitespace character */
@@ -58,12 +58,16 @@ struct image *netpbm_open(FILE *f){
b->img.fmt = &netpbm;
return (struct image *)b;
+
+err:
+ free(b);
+ return NULL;
}
static unsigned char readvali(struct netpbm_t *b){
skipspace(b->f);
int val;
- fscanf(b->f, "%i", &val);
+ int unused = fscanf(b->f, "%i", &val);
return val * 255 / b->maxval;
}
@@ -129,7 +133,7 @@ int netpbm_read(struct image *img){
}
}else if(b->format == '6'){
if(b->maxval == 255){
- fread(img->buf, 1, left * 3, f);
+ int unused = fread(img->buf, 1, left * 3, f);
}else{
while(left--){
img->buf[a++] = readvalb(b);