X-Git-Url: http://www.wagner.pp.ru/gitweb/?p=oss%2Fcatdoc.git;a=blobdiff_plain;f=src%2Fole.c;h=68fade81abedf004c6da3715670cabca1f1bab13;hp=d1c731ddf8a309127428d168096e1ec38c1fba7f;hb=d106443a3be63ce39f77b281eb80e85e54141e03;hpb=e2020c47c14a8a03f44734a6c0adc48fb5129c2f diff --git a/src/ole.c b/src/ole.c index d1c731d..68fade8 100644 --- a/src/ole.c +++ b/src/ole.c @@ -332,6 +332,23 @@ FILE *ole_readdir(FILE *f) { return NULL; } while(1) { + if(chainCurrent < 0 || + chainCurrent >= ( + e->isBigBlock ? + ((bbdNumBlocks*sectorSize)/4) : + ((sbdNumber*shortSectorSize)/4) + ) || + (e->numOfBlocks > + e->length/( + e->isBigBlock ? + sectorSize : + shortSectorSize + ) + ) + ) { +/* fprintf(stderr, "chain End=%ld\n", chainCurrent); */ + break; + } /* fprintf(stderr, "chainCurrent=%ld\n", chainCurrent); */ e->blocks[e->numOfBlocks++] = chainCurrent; if (e->numOfBlocks >= chainMaxLen) { @@ -354,15 +371,6 @@ FILE *ole_readdir(FILE *f) { } else { chainCurrent=-1; } - if(chainCurrent <= 0 || - chainCurrent >= ( e->isBigBlock ? - ((bbdNumBlocks*sectorSize)/4) - : ((sbdNumber*shortSectorSize)/4) ) || - (e->numOfBlocks > - e->length/(e->isBigBlock ? sectorSize : shortSectorSize))) { -/* fprintf(stderr, "chain End=%ld\n", chainCurrent); */ - break; - } } }