AcademySoftwareFoundation / AcademySoftwareFoundation/OpenColorIO

ocioarchive symbolic link handling broken (upstream bug/feature)

Open
#2,294 8 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.