X-Git-Url: http://www.wagner.pp.ru/gitweb/?a=blobdiff_plain;f=src%2Fole.c;h=3aa880567f0104923024fc4273eeb7212e9c7331;hb=73b1dd7326585b7c18ce6e24320656d0d6f843cc;hp=1e26dd797a190d98712ddce6d5a1927471bfae3c;hpb=ccf8e1947728585acd2301c9b8e459e6918bfb5f;p=oss%2Fcatdoc.git diff --git a/src/ole.c b/src/ole.c index 1e26dd7..3aa8805 100644 --- a/src/ole.c +++ b/src/ole.c @@ -74,6 +74,7 @@ FILE* ole_init(FILE *f, void *buffer, size_t bufSize) { ret=fwrite(buffer, 1, bufSize, newfile); if(ret != bufSize) { perror("Can't write to tmp file"); + fclose(newfile); return NULL; } } @@ -125,7 +126,11 @@ FILE* ole_init(FILE *f, void *buffer, size_t bufSize) { memcpy(tmpBuf,oleBuf+0x4c,MSAT_ORIG_SIZE); mblock=getlong(oleBuf,0x44); msat_size=getlong(oleBuf,0x48); - if (msat_size * sectorSize) + if (msat_size * sectorSize > fileLength) { + free(tmpBuf); + return NULL; + } + /* fprintf(stderr, "msat_size=%ld\n", msat_size); */ i=0;