From 56916452e9fb09ed8ff94b80d8a95dd1a8ca66ac Mon Sep 17 00:00:00 2001 From: Dmitry Kovba Date: Fri, 3 Apr 2026 19:07:30 -0700 Subject: [PATCH] Fix the uid/gid truncation to 16 bits (#636) Fixes the uid/gid truncation to 16 bits. --- Sources/ContainerizationEXT4/EXT4Reader+Export.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/ContainerizationEXT4/EXT4Reader+Export.swift b/Sources/ContainerizationEXT4/EXT4Reader+Export.swift index bd6c365b..938cb1d6 100644 --- a/Sources/ContainerizationEXT4/EXT4Reader+Export.swift +++ b/Sources/ContainerizationEXT4/EXT4Reader+Export.swift @@ -70,8 +70,8 @@ extension EXT4.EXT4Reader { let pathStr = path.description entry.path = pathStr entry.size = Int64(size) - entry.group = gid_t(inode.gid) - entry.owner = uid_t(inode.uid) + entry.group = gid_t(inode.gidHigh) << 16 | gid_t(inode.gid) + entry.owner = uid_t(inode.uidHigh) << 16 | uid_t(inode.uid) entry.creationDate = Date(fsTimestamp: UInt64(inode.crtimeExtra) << 32 | UInt64(inode.crtime)) entry.modificationDate = Date(fsTimestamp: UInt64(inode.mtimeExtra) << 32 | UInt64(inode.mtime)) entry.contentAccessDate = Date(fsTimestamp: UInt64(inode.atimeExtra) << 32 | UInt64(inode.atime)) @@ -153,8 +153,8 @@ extension EXT4.EXT4Reader { entry.path = path.description entry.hardlink = targetPath.description entry.permissions = mode_t(inode.mode) - entry.group = gid_t(inode.gid) - entry.owner = uid_t(inode.uid) + entry.group = gid_t(inode.gidHigh) << 16 | gid_t(inode.gid) + entry.owner = uid_t(inode.uidHigh) << 16 | uid_t(inode.uid) entry.creationDate = Date(fsTimestamp: UInt64(inode.crtimeExtra) << 32 | UInt64(inode.crtime)) entry.modificationDate = Date(fsTimestamp: UInt64(inode.mtimeExtra) << 32 | UInt64(inode.mtime)) entry.contentAccessDate = Date(fsTimestamp: UInt64(inode.atimeExtra) << 32 | UInt64(inode.atime))