npm / adm-zip
adm-zip
What changed in adm-zip 0.5 to 0.6, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.
6 breaking9 security2 new APIs and options1 performance1 behavior and defaults16 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initadm-zip 0.627 changes
Breaking changes 6
Folder archiving no longer follows symlinks outside the archived folder.
Archives containing duplicate entry names are rejected.
Extraction strips setuid, setgid, and sticky bits from file permissions.
Extraction is blocked from writing through symlinks inside the target.
Extraction now preserves subdirectories instead of flattening files into the target folder by basename, avoiding silent overwrites of same-named files.
The minimum supported Node.js version is now 14.
Security 9
adm-zip: Decompression-bomb protection (fix for CVE-2026-39244) can be bypassed by declaring uncompressed size as 0
adm-zip: Duplicate ZIP entry names: getEntry() and extractAllTo() resolve to different content
adm-zip extraction preserves SUID/SGID bits from untrusted ZIPs -> local privilege escalation
adm-zip: getDataAsync() bypasses the maxOutputLength size guard enforced by the synchronous getData() path
Malformed DEFLATE data no longer causes an uncaught crash during asynchronous decompression.
The size cap is enforced on the asynchronous path and when the cap is zero.
Entries whose declared data extent exceeds the buffer are rejected.
Entry-name lookup is hardened against object injection from __proto__ names.
Allocation for crafted archives declaring a huge uncompressed size is bounded by the data actually present, preventing unbounded Buffer.alloc and process OOM.
New APIs and options 1
Built-in TypeScript definitions are included, so users can drop @types/adm-zip.
Performance 1
Entry sorting is about six times faster for large archives.
Fixes and other changes 10
Local paths are no longer mangled on Windows.
The promise-based folder addition method no longer hangs on empty folders or swallows errors.
Malformed-header parse errors are routed through the asynchronous callback.
Symlink loops no longer cause infinite recursion when adding a local folder.
Valid archives rejected by a data-descriptor regression are accepted again.
Directory entries with empty names are handled.
Directory permissions are restored during extraction.
Extraction no longer fails when the modification time cannot be set; setting times is best-effort.
test() no longer always returns false for archives with files.
Write failures no longer cause an uncaught process crash.
adm-zip 0.58 changes
New APIs and options 1
Adds support for writing ZIP64 archives.
Behavior and default changes 1
The entryHeader time setter is more tolerant.
Fixes and other changes 6
Fixes corrupted ZIP files when round-tripping entries with a data descriptor.
Fixes Archive Utility failures with ZIP files containing empty directories.
Prevents crashes when process.versions is an empty object.
Fixes an issue with absolute paths.
The CRC check now checks the local descriptor flag.
Directories are created only if they do not already exist.