Skip to content

Commit 3942566

Browse files
authored
fix(security): CWE-1333, CWE-78 (#5976)
1 parent d739294 commit 3942566

File tree

3 files changed

+51
-461
lines changed

3 files changed

+51
-461
lines changed

lib/common/file-system.ts

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { EOL } from "os";
1818
import * as detectNewline from "detect-newline";
1919
import { IFileSystem, IReadFileOptions, IFsStats } from "./declarations";
2020
import { IInjector } from "./definitions/yok";
21-
import { create as createArchiver } from "archiver";
21+
import * as yazl from "yazl";
2222

2323
// TODO: Add .d.ts for mkdirp module (or use it from @types repo).
2424
const mkdirp = require("mkdirp");
@@ -37,28 +37,24 @@ export class FileSystem implements IFileSystem {
3737
): Promise<void> {
3838
//we are resolving it here instead of in the constructor, because config has dependency on file system and config shouldn't require logger
3939
const $logger = this.$injector.resolve("logger");
40-
const zip = createArchiver("zip", {
41-
zlib: {
42-
level: 9,
43-
},
44-
});
40+
const zip = new yazl.ZipFile();
4541
const outFile = fs.createWriteStream(zipFile);
46-
zip.pipe(outFile);
42+
43+
for (const file of files) {
44+
let relativePath = zipPathCallback(file);
45+
relativePath = relativePath.replace(/\\/g, "/");
46+
$logger.trace("zipping as '%s' file '%s'", relativePath, file);
47+
zip.addFile(file, relativePath, { compress: true });
48+
}
49+
zip.end();
4750

4851
return new Promise<void>((resolve, reject) => {
4952
outFile.on("error", (err: Error) => reject(err));
53+
zip.outputStream.on("error", (err: Error) => reject(err));
54+
zip.outputStream.pipe(outFile);
5055
outFile.on("close", () => {
51-
$logger.trace("zip: %d bytes written", zip.pointer());
5256
resolve();
5357
});
54-
55-
for (const file of files) {
56-
let relativePath = zipPathCallback(file);
57-
relativePath = relativePath.replace(/\\/g, "/");
58-
$logger.trace("zipping as '%s' file '%s'", relativePath, file);
59-
zip.append(fs.createReadStream(file), { name: relativePath });
60-
}
61-
zip.finalize();
6258
});
6359
}
6460

0 commit comments

Comments
 (0)