From e40ddacd073a2627cb3ecf62f91c0875fcc9d8cd Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 16 Aug 2017 18:36:18 +0300 Subject: [PATCH] Fix incorrect posixPermissions in tar in some cases Sometimes "mode" fields also includes unix type which we haven't accounted for. --- Sources/TarEntry.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Sources/TarEntry.swift b/Sources/TarEntry.swift index 56cbd16b..24b205e8 100644 --- a/Sources/TarEntry.swift +++ b/Sources/TarEntry.swift @@ -168,13 +168,14 @@ public class TarEntry: ContainerEntry { var attributesDict = [FileAttributeKey: Any]() let blockStartIndex = pointerData.index + // File name fileName = try pointerData.nullEndedAsciiString(cutoff: 100) // File mode guard let octalPosixPermissions = Int(try pointerData.nullSpaceEndedAsciiString(cutoff: 8)) else { throw TarError.fieldIsNotNumber } - let posixPermissions = octalPosixPermissions.octalToDecimal() + let posixPermissions = octalPosixPermissions.octalToDecimal() & 0xFFF attributesDict[FileAttributeKey.posixPermissions] = posixPermissions mode = posixPermissions