]> www.wagner.pp.ru Git - oss/catdoc.git/blobdiff - src/ole.c
Fix couple of errors from coverity scan
[oss/catdoc.git] / src / ole.c
index 1e26dd797a190d98712ddce6d5a1927471bfae3c..819ad33eded3a86271b6507c34d7855cd7e69a55 100644 (file)
--- a/src/ole.c
+++ b/src/ole.c
@@ -125,7 +125,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;
@@ -495,8 +499,8 @@ size_t ole_read(void *ptr, size_t size, size_t nmemb, FILE *stream) {
                int readbytes;
                blockNumber++;
                newoffset = calcFileBlockOffset(e,blockNumber);
-               if (newoffset != e->file_offset);
-               fseek(e->file, e->file_offset=newoffset , SEEK_SET);
+               if (newoffset != e->file_offset)
+                       fseek(e->file, e->file_offset=newoffset , SEEK_SET);
                readbytes=fread(cptr+rread, 1, min(llen-rread, ssize), e->file);
                rread +=readbytes;
                e->file_offset +=readbytes;