denoland / denoland/std

Untar ././@LongLink

Open
#3,048 0 comments 0 reactions 0 assignees View on GitHub
bug tar
Dominant language
TypeScript
Stars
3.6k
Forks
681
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
Untar from std/archive/untar.ts does not handle `././@LongLink` blocks.
This is a trick used by GNU-compatible tar utilities to encode links that are larger then the 512 byte blocks tar uses.
It's hard to find exact specs about this, apparently a special block type is used, and the following blocks are the actual name?
Might also be fine to just filter for the `././@LongLink` name and read it out.

(I suppose this could be viewed as a feature request, but IMO treating it as a bug makes sense, as it will silently break untar based code)

**Steps to Reproduce**
- Build a tar with a long name (>512 bytes) with any GNU-compatible tar utility
- Attempt to untar using deno
- Notice the `@LongLink` file

**Expected behavior**
- File should be read correctly

**Environment**
- OS: Arch Linux x86_64, Kernel: 6.0.12-zen1-1-zen
- deno version: deno 1.29.1 (release, x86_64-unknown-linux-gnu), v8 10.9.194.5, typescript 4.9.4
- std version: 0.170 (but I'd guess that this is not a regression)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.