Strip spaces from octal fields for old tars
This commit is contained in:
parent
4cfa377cba
commit
a6f9c6f8a9
4 changed files with 23 additions and 2 deletions
|
@ -90,6 +90,9 @@ var encodeOct = function(val, n) {
|
||||||
};
|
};
|
||||||
|
|
||||||
var decodeOct = function(val, offset) {
|
var decodeOct = function(val, offset) {
|
||||||
|
// Older versions of tar can prefix with spaces
|
||||||
|
while (val[offset] === 32) offset += 1;
|
||||||
|
|
||||||
return parseInt(val.slice(offset, clamp(indexOf(val, 32, offset, val.length), val.length, val.length)).toString(), 8);
|
return parseInt(val.slice(offset, clamp(indexOf(val, 32, offset, val.length), val.length, val.length)).toString(), 8);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -417,4 +417,21 @@ test('invalid-file', function(t) {
|
||||||
});
|
});
|
||||||
|
|
||||||
extract.end(fs.readFileSync(fixtures.INVALID_TGZ));
|
extract.end(fs.readFileSync(fixtures.INVALID_TGZ));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('space prefixed', function(t) {
|
||||||
|
t.plan(5);
|
||||||
|
|
||||||
|
var extract = tar.extract();
|
||||||
|
|
||||||
|
extract.on('entry', function(header, stream, callback) {
|
||||||
|
t.ok(true)
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
|
||||||
|
extract.on('finish', function() {
|
||||||
|
t.ok(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
extract.end(fs.readFileSync(fixtures.SPACE_TAR_GZ));
|
||||||
|
});
|
||||||
|
|
3
test/fixtures/index.js
vendored
3
test/fixtures/index.js
vendored
|
@ -7,4 +7,5 @@ exports.LONG_NAME_TAR = path.join(__dirname, 'long-name.tar');
|
||||||
exports.UNICODE_BSD_TAR = path.join(__dirname, 'unicode-bsd.tar');
|
exports.UNICODE_BSD_TAR = path.join(__dirname, 'unicode-bsd.tar');
|
||||||
exports.UNICODE_TAR = path.join(__dirname, 'unicode.tar');
|
exports.UNICODE_TAR = path.join(__dirname, 'unicode.tar');
|
||||||
exports.NAME_IS_100_TAR = path.join(__dirname, 'name-is-100.tar');
|
exports.NAME_IS_100_TAR = path.join(__dirname, 'name-is-100.tar');
|
||||||
exports.INVALID_TGZ = path.join(__dirname, 'invalid.tgz');
|
exports.INVALID_TGZ = path.join(__dirname, 'invalid.tgz');
|
||||||
|
exports.SPACE_TAR_GZ = path.join(__dirname, 'space.tar');
|
||||||
|
|
BIN
test/fixtures/space.tar
vendored
Normal file
BIN
test/fixtures/space.tar
vendored
Normal file
Binary file not shown.
Loading…
Reference in a new issue