Files
Open_Ultra_SAST/benchmarks/pairs/vfc-js/bestzip-2-1-6/vuln.js
T

42 lines
1.3 KiB
JavaScript
Raw Normal View History

// Provenance: nfriedly/node-bestzip (vuln).
// repo: nfriedly/node-bestzip
// commit: fcea252e52b6078eff6caf5531bd32c53fccb59f
// parent: fcea252e52b6078eff6caf5531bd32c53fccb59f
// commit_url: https://github.com/nfriedly/node-bestzip/commit/45d4a901478c6a8f396c8b959dd6cf8fd3f955b6
// cve: CVE-2020-7730
// license: MIT
// function: nativeZip
// relpath: lib/bestzip.js
// provenance: human
// mechanism: source_reaches_sink
// upstream_start: 66
const nativeZip = options =>
new Promise((resolve, reject) => {
const sources = Array.isArray(options.source)
? options.source.join(" ")
: options.source;
const command = `zip --quiet --recurse-paths ${
options.destination
} ${sources}`;
const zipProcess = cp.exec(command, {
stdio: "inherit",
cwd: options.cwd
});
zipProcess.on("error", reject);
zipProcess.on("close", exitCode => {
if (exitCode === 0) {
resolve();
} else {
// exit code 12 means "nothing to do" right?
//console.log('rejecting', zipProcess)
reject(
new Error(
`Unexpected exit code from native zip command: ${exitCode}\n executed command '${command}'\n executed inin directory '${options.cwd ||
process.cwd()}'`
)
);
}
});
});