X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=src%2Fwsr88ddec.c;h=50152722da65859c4e4829a39acc9abf504acb59;hb=0166a74c965b1e8466c90d8dc8dc49731506543e;hp=107f279265e5e95e0793c0332393f3c698283774;hpb=721c55f22af98cf2fcc247169836e9b355a47104;p=grits diff --git a/src/wsr88ddec.c b/src/wsr88ddec.c index 107f279..5015272 100644 --- a/src/wsr88ddec.c +++ b/src/wsr88ddec.c @@ -84,27 +84,32 @@ int main(int argc, char **argv) /* Clear header */ //debug("reading header\n"); - fread (buf, 1, 24, input); - fwrite(buf, 1, 24, output); + if (!fread (buf, 24, 1, input)) + err(1, "error reading header"); + if (!fwrite(buf, 24, 1, output)) + err(1, "error writing header"); //debug("reading body\n"); while ((st = fread(&size, 1, 4, input))) { + //debug("size=%08x\n", size); //debug("read %u bytes\n", st); //fwrite(&size, 1, 4, output); // DEBUG size = abs(ntohl(size)); if (size < 0) return 0; //debug("size = %x\n", size); - if (size > 10*1024*1024) + if (size > 20*1024*1024) err(1, "sanity check failed, buf is to big: %d", size); buf = realloc(buf, size); - fread (buf, 1, size, input); + if (!fread(buf, size, 1, input)) + err(1, "error reading data"); //fwrite(buf, 1, size, output); // DEBUG int dec_len; char *dec = bunzip2(buf, size, &dec_len); // debug("decompressed %u bytes\n", dec_len); - fwrite(dec, 1, dec_len, output); + if (!fwrite(dec, 1, dec_len, output)) + err(1, "error writing data"); free(dec); }