Skip to content

Commit cb300c9

Browse files
authored
Merge pull request #260 from devsnd/master
fix race-condition crash when extracting data and extracted files are (re)moved
2 parents c309c92 + da9a6a1 commit cb300c9

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

Diff for: adm-zip.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,11 @@ module.exports = function (/*String*/input) {
440440
throw Utils.Errors.CANT_EXTRACT_FILE;
441441
}
442442
Utils.writeFileTo(entryName, content, overwrite);
443-
fs.utimesSync(entryName, entry.header.time, entry.header.time)
443+
try {
444+
fs.utimesSync(entryName, entry.header.time, entry.header.time)
445+
} catch (err) {
446+
throw Utils.Errors.CANT_EXTRACT_FILE;
447+
}
444448
})
445449
},
446450

@@ -488,7 +492,11 @@ module.exports = function (/*String*/input) {
488492
}
489493

490494
Utils.writeFileToAsync(sanitize(targetPath, entryName), content, overwrite, function (succ) {
491-
fs.utimesSync(pth.resolve(targetPath, entryName), entry.header.time, entry.header.time);
495+
try {
496+
fs.utimesSync(pth.resolve(targetPath, entryName), entry.header.time, entry.header.time);
497+
} catch (err) {
498+
callback(new Error('Unable to set utimes'));
499+
}
492500
if (i <= 0) return;
493501
if (!succ) {
494502
i = 0;

Diff for: util/fileSystem.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ exports.require = function() {
22
var fs = require("fs");
33
if (process.versions['electron']) {
44
try {
5-
fs = require("original-fs")
5+
originalFs = require("original-fs");
6+
if (Object.keys(originalFs).length > 0) {
7+
fs = originalFs;
8+
}
69
} catch (e) {}
710
}
811
return fs

0 commit comments

Comments
 (0)