0004-Handle-the-PKWare-verification-bit-of-internal-attri.patch (1189B)
1 From af50c278c5b2c57a76771825a80ca3ff9d315acd Mon Sep 17 00:00:00 2001 2 From: "Steven M. Schweda" <sms@antinode.info> 3 Date: Sat, 15 Jun 2019 18:13:11 -0700 4 Subject: [PATCH] Handle the PKWare verification bit of internal attributes 5 6 --- 7 process.c | 7 +++++++ 8 1 file changed, 7 insertions(+) 9 10 diff --git a/process.c b/process.c 11 index 1e9a1e1..ed314e1 100644 12 --- a/process.c 13 +++ b/process.c 14 @@ -1729,6 +1729,13 @@ int process_cdir_file_hdr(__G) /* return PK-type error code */ 15 else if (uO.L_flag > 1) /* let -LL force lower case for all names */ 16 G.pInfo->lcflag = 1; 17 18 + /* Handle the PKWare verification bit, bit 2 (0x0004) of internal 19 + attributes. If this is set, then a verification checksum is in the 20 + first 3 bytes of the external attributes. In this case all we can use 21 + for setting file attributes is the last external attributes byte. */ 22 + if (G.crec.internal_file_attributes & 0x0004) 23 + G.crec.external_file_attributes &= (ulg)0xff; 24 + 25 /* do Amigas (AMIGA_) also have volume labels? */ 26 if (IS_VOLID(G.crec.external_file_attributes) && 27 (G.pInfo->hostnum == FS_FAT_ || G.pInfo->hostnum == FS_HPFS_ || 28 -- 29 2.20.1 30