AcademySoftwareFoundation / AcademySoftwareFoundation/OpenColorIO
ocioarchive symbolic link handling broken (upstream bug/feature)
- Dominant language
- C++
- Stars
- 2.1k
- Forks
- 503
- PR merge metrics
- No merged PRs in 30d
Description
We were trying to use OCIO archive on a tree that happened to contain symbolic links to another location. The archive runs with no errors indicated but neither `unzip` not `ocioarchive` can extract the files. It appears to be related to https://github.com/zlib-ng/minizip-ng/issues/797
In our case the symbolic link was to a LUT file, which when trying to extract resulted in an attempt to create a symbolic link pointing to the contents of the file... example contents from `zipinfo`
```
Central directory entry #24:
---------------------------
There are an extra 16 bytes preceding this file.
colour/look/aces_1.2/luts/Log2_48_nits_Shaper_to_linear.spi1d
offset of local header from start of archive: 16072021
(0000000000F53D55h) bytes
file system or operating system of origin: Unix
version of encoding software: 4.5
minimum file system compatibility required: MS-DOS, OS/2 or NT FAT
minimum software version required to extract: 2.0
compression method: deflated
compression sub-type (deflation): maximum
file security status: not encrypted
extended local header: yes
file last modified on (DOS date/time): 2023 Aug 1 08:30:30
32-bit CRC value (hex): 83a5291c
compressed size: 27242 bytes
uncompressed size: 73776 bytes
length of filename: 61 characters
length of extra field: 0 bytes
length of file comment: 0 characters
disk number on which file begins: disk 1
apparent file type: binary
Unix file attributes (120777 octal): lrwxrwxrwx
MS-DOS file attributes (00 hex): none
```
So we see the file contents are stored compressed but the file attributes are a for a symbolic link.
Contributor guide
Research direction
Start with the ocioarchive symbolic-link handling and the archive extraction entry points; compare the reported behavior with the linked minizip-ng issue. Reproduce an archive containing a symbolic link to a LUT file, then verify that both ocioarchive and unzip can extract the archived entry correctly without treating its contents as a link target.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100