diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-08-21 04:33:51 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2010-08-21 04:33:51 +0000 |
| commit | 0e5a6cedee287eb076669a463c759aa835127698 (patch) | |
| tree | 27bf5ae125eeaed5b19edc95e636619871a8e8f4 /packages/unzip | |
| parent | f3f3f607689bffd411c9468690a06b66aa73bb2a (diff) | |
| download | fpc-0e5a6cedee287eb076669a463c759aa835127698.tar.gz | |
* patch from Dmitry for bug 7604, fixing the CRC problems.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@15864 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/unzip')
| -rw-r--r-- | packages/unzip/src/unzip51g.pp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/packages/unzip/src/unzip51g.pp b/packages/unzip/src/unzip51g.pp index 79d1250339..1de27749cc 100644 --- a/packages/unzip/src/unzip51g.pp +++ b/packages/unzip/src/unzip51g.pp @@ -2410,8 +2410,18 @@ BEGIN originalcrc := b AND $FFFF; dumpbits ( 16 ); needbits ( 16 ); - originalcrc := ( b AND $FFFF ) SHL 16; + originalcrc := originalcrc OR LongWord(( b AND $FFFF ) SHL 16); dumpbits ( 16 ); + + IF originalcrc = $08074b50 THEN BEGIN + { skiping possible $08074b50 data descriptor signature. see PKWARE APPNOTE.txt } + needbits ( 16 ); + originalcrc := b AND $FFFF; + dumpbits ( 16 ); + needbits ( 16 ); + originalcrc := originalcrc OR LongWord(( b AND $FFFF ) SHL 16); + dumpbits ( 16 ); + END; END; close ( infile ); |
