Tcl Library Source Code

Artifact [6d407ad805]
Login

Artifact 6d407ad805b12e7d5d0414c375626744901d273b23989a3bde9b009684698c64:

Ticket change [6d407ad805] - New ticket [a0cbdc7e6f4a977e|a0cbdc7e6f] <i>zipfile::decode::unzip permissions bug with some zips</i>. by umlaeute 2025-03-06 16:40:22.
D 2025-03-06T16:40:22.060
J assignee nobody
J closer nobody
J comment Some\sZIP-files\sgenerated\son\sWindows\scannot\sbe\sproperly\sextracted:\sthe\sextracted\sfiles\send\sup\swith\sa\spermission\sof\s`0o000`\r\n\r\nOne\ssuch\sZIP-file\scan\sbe\sdownloaded\svia\shttps://github.com/user-attachments/files/19111907/iem_vanilla.zip\r\n\r\n`zipinfo\s-v`\stells\sme\ssomething\slike\sthis:\r\n\r\n```\r\nCentral\sdirectory\sentry\s#1:\r\n---------------------------\r\n\r\n\s\siem_vanilla/0.INTRO.txt\r\n\r\n\s\soffset\sof\slocal\sheader\sfrom\sstart\sof\sarchive:\s\s\s0\r\n\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s(0000000000000000h)\sbytes\r\n\s\sfile\ssystem\sor\soperating\ssystem\sof\sorigin:\s\s\s\s\s\sMS-DOS,\sOS/2\sor\sNT\sFAT\r\n\s\sversion\sof\sencoding\ssoftware:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s2.0\r\n\s\sminimum\sfile\ssystem\scompatibility\srequired:\s\s\s\s\sMS-DOS,\sOS/2\sor\sNT\sFAT\r\n\s\sminimum\ssoftware\sversion\srequired\sto\sextract:\s\s\s2.0\r\n\s\scompression\smethod:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\sdeflated\r\n\s\scompression\ssub-type\s(deflation):\s\s\s\s\s\s\s\s\s\s\s\s\s\s\snormal\r\n\s\sfile\ssecurity\sstatus:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\snot\sencrypted\r\n\s\sextended\slocal\sheader:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\sno\r\n\s\sfile\slast\smodified\son\s(DOS\sdate/time):\s\s\s\s\s\s\s\s\s\s2020\sOct\s30\s15:42:26\r\n\s\s32-bit\sCRC\svalue\s(hex):\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\sbda8cbfe\r\n\s\scompressed\ssize:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s1861\sbytes\r\n\s\suncompressed\ssize:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s4899\sbytes\r\n\s\slength\sof\sfilename:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s23\scharacters\r\n\s\slength\sof\sextra\sfield:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0\sbytes\r\n\s\slength\sof\sfile\scomment:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0\scharacters\r\n\s\sdisk\snumber\son\swhich\sfile\sbegins:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\sdisk\s1\r\n\s\sapparent\sfile\stype:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\stext\r\n\s\snon-MSDOS\sexternal\sfile\sattributes:\s\s\s\s\s\s\s\s\s\s\s\s\s000000\shex\r\n\s\sMS-DOS\sfile\sattributes\s(20\shex):\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\sarc\s\r\n\r\n\s\sThere\sis\sno\sfile\scomment.\r\n```\r\n\r\nThe\sproblem\sis\sapparently,\sthat\sthe\s`efattr`\sfield\sfor\sthe\sfile\sis\ssomething\slike\s`32`,\swhich\stcllib\stakes\sas\san\sinvitation\sto\schange\sthe\spermissions,\sbut\sthen\scalculates\sthe\spermissions\sas\s`0`.\r\nCf\sthis\scode\sfor\s[::zipfile::decode::CopyFile](https://core.tcl-lang.org/tcllib/file?ci=tip&name=modules/zip/decode.tcl&ln=220-234):\r\n```\r\n\s\s\s\sif\s{\r\n\t($::tcl_platform(platform)\sne\s"windows")\s&&\r\n\t($fd(efattr)\s!=\s0)\r\n\s\s\s\s}\s{\r\n\tfile\sattributes\s$dst\s-permissions\s\\\r\n\t\s\s\s\s[string\smap\s{0\s---\s1\s--x\s2\s-w-\s3\s-wx\s4\sr--\s5\sr-x\s6\srw-\s7\srwx}\s\\\r\n\t\t\s[format\s%03o\s[expr\s{($fd(efattr)\s>>\s16)\s&\s0x1ff}]]]\r\n\s\s\s\s}\r\n```\r\n\r\n(obviously,\s`(32>>16)&0x1ff`\sevaluates\sto\s`0`.
J foundin 2.0
J is_private 0
J login umlaeute
J mimetype text/x-markdown
J priority 5\sMedium
J private_contact 25d17d5d6504beca5be732fc23fc1776440fca23
J resolution None
J severity Minor
J status Open
J submitter umlaeute
J subsystem zip
J title zipfile::decode::unzip\spermissions\sbug\swith\ssome\szips
J type Bug
K a0cbdc7e6f4a977e4c24b5a1a5c0f578c334958d
U umlaeute
Z 4767dd547c929aaea71aa0f6d356acfe