Merge pull request #27 from sheerun/fix/spaces

Strip spaces from octal fields for old tars
This commit is contained in:
Mathias Buus 2014-09-23 06:54:48 -07:00
commit adc2f99cf3
4 changed files with 23 additions and 2 deletions

View file

@ -90,6 +90,9 @@ var encodeOct = function(val, n) {
};
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);
};

View file

@ -417,4 +417,21 @@ test('invalid-file', function(t) {
});
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));
});

View file

@ -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_TAR = path.join(__dirname, 'unicode.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

Binary file not shown.