summaryrefslogtreecommitdiff
path: root/archival/libunarchive/get_header_tar.c
diff options
context:
space:
mode:
Diffstat (limited to 'archival/libunarchive/get_header_tar.c')
-rw-r--r--archival/libunarchive/get_header_tar.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c
index 603535a..561de1c 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -151,10 +151,9 @@ extern char get_header_tar(archive_handle_t *archive_handle)
file_header->mode |= S_IFIFO;
break;
# endif
- /* hard links are detected as entries with 0 size, a link name,
- * and not being a symlink, hence we have nothing to do here */
+ /* hard links are detected as regular files with 0 size and a link name */
case '1':
- file_header->mode |= ~S_IFLNK;
+ file_header->mode &= (S_IFREG | 07777);
break;
# ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
case 'L': {