diff options
author | OctaneSnail <os@v12pwr.com> | 2012-02-02 23:53:31 +0400 |
---|---|---|
committer | OctaneSnail <os@v12pwr.com> | 2012-02-02 23:53:31 +0400 |
commit | f1972bbb600e8bfa12336dd02d27b3e668982d94 (patch) | |
tree | dcf2f89bdca2507cf141fd9bd0b93f7567bb3ecf | |
parent | f8354578d6dacb9b74c4b070d4d16d087cffac83 (diff) |
Fix reading file headers with unknown content.
-rw-r--r-- | RAR.cpp | 28 | ||||
-rw-r--r-- | RAR.h | 2 |
2 files changed, 3 insertions, 27 deletions
@@ -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; @@ -82,8 +82,6 @@ typedef struct char *filename; - BYTE salt [8]; - BYTE os; BYTE version; BYTE method; |