UNPKG

extract-base-iterator

Version:

Base iterator for extract iterators like tar-iterator and zip-iterator

13 lines (12 loc) 514 B
import path from 'path'; import { stringStartsWith } from './compat.js'; export default function safeJoinPath(dest, relPath) { const resolvedDest = path.resolve(dest); const resolvedFull = path.resolve(dest, relPath); if (resolvedFull !== resolvedDest && !stringStartsWith(resolvedFull, resolvedDest + path.sep)) { const err = new Error(`Path traversal detected: '${relPath}' escapes destination '${dest}'`); err.code = 'ETRAVERSAL'; throw err; } return resolvedFull; }