X-Git-Url: http://www.wagner.pp.ru/gitweb/?p=oss%2Fcatdoc.git;a=blobdiff_plain;f=src%2Fole.c;fp=src%2Fole.c;h=805d8c716c9694bba2a4afc7c7045bb00953a0e4;hp=68fade81abedf004c6da3715670cabca1f1bab13;hb=704c53839728067bb54c9c570916b77008388a23;hpb=69e68e6b8d2f38a4c5b896ebd42eb1d866b2087d diff --git a/src/ole.c b/src/ole.c index 68fade8..805d8c7 100644 --- a/src/ole.c +++ b/src/ole.c @@ -37,8 +37,8 @@ long propCurNumber, propLen, propNumber, propStart; unsigned char *properties=NULL; long int fileLength=0; -static char ole_sign[]={0xD0,0xCF,0x11,0xE0,0xA1,0xB1,0x1A,0xE1,0}; - +char ole_sign[]={0xD0,0xCF,0x11,0xE0,0xA1,0xB1,0x1A,0xE1,0}; +char zip_sign[]="PK\003\004"; /** * Initializes ole structure @@ -97,7 +97,10 @@ FILE* ole_init(FILE *f, void *buffer, size_t bufSize) { if ( ret != BBD_BLOCK_SIZE ) { return NULL; } - if (strncmp((char *)&oleBuf,ole_sign,8) != 0) { + if (strncmp((char *)&oleBuf,zip_sign,4) == 0) { + fprintf(stderr,"Looks like ZIP archive or Office 2007 or later. Not supported\n"); + return NULL; + } else if (strncmp((char *)&oleBuf,ole_sign,8) != 0) { return NULL; } sectorSize = 1<