diff --git a/AltSign/Categories/NSFileManager+Zip.m b/AltSign/Categories/NSFileManager+Zip.m index e901bd6..ca17970 100644 --- a/AltSign/Categories/NSFileManager+Zip.m +++ b/AltSign/Categories/NSFileManager+Zip.m @@ -220,6 +220,11 @@ - (BOOL)unzipArchiveAtURL:(NSURL *)archiveURL toDirectory:(NSURL *)directoryURL } while (result > 0); short permissions = (info.external_fa >> 16) & 0x01FF; + if (permissions == 0) { + // No Unix mode bits set -- archive was likely created on Windows. + // Use a readable default so signing can proceed. (Fixes issue #447.) + permissions = 0644; + } if (![self setAttributes:@{NSFilePosixPermissions: @(permissions)} ofItemAtPath:fileURL.path error:error]) { finish();