From f1972bbb600e8bfa12336dd02d27b3e668982d94 Mon Sep 17 00:00:00 2001 From: OctaneSnail Date: Thu, 2 Feb 2012 20:53:31 +0100 Subject: Fix reading file headers with unknown content. --- RAR.cpp | 28 +++------------------------- RAR.h | 2 -- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/RAR.cpp b/RAR.cpp index aa13ba6..9fd12a4 100644 --- a/RAR.cpp +++ b/RAR.cpp @@ -79,32 +79,10 @@ DWORD ReadHeader (HANDLE file, rar_header_t *dest) READ_ITEM2 (dest->fh.filename, dest->fh.name_len); dest->fh.filename [dest->fh.name_len] = 0; - if (fh.flags & LHD_SALT) - READ_ITEM2 (dest->fh.salt, 8); - - if (fh.flags & LHD_EXTTIME) + if (acc < fh.size) { - WORD flags; - READ_ITEM (flags); - for (int i= 0 ; i < 4; i++) - { - DWORD rmode = flags >> (3 - i) * 4; - if (!(rmode & 8)) - continue; - - if (i != 0) - { - DWORD dosTime; - READ_ITEM (dosTime); - } - - int count = rmode & 3; - for (int j = 0; j < count; j++) - { - BYTE byte; - READ_ITEM (byte); - } - } + SetFilePointer (file, (LONG) (fh.size - acc), NULL, FILE_CURRENT); + acc = fh.size; } break; diff --git a/RAR.h b/RAR.h index 06545cd..cf528c1 100644 --- a/RAR.h +++ b/RAR.h @@ -82,8 +82,6 @@ typedef struct char *filename; - BYTE salt [8]; - BYTE os; BYTE version; BYTE method; -- cgit v1.2.3