diff --git a/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c b/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c index ec29c5c418e4..780ddb78aa27 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c @@ -635,7 +635,7 @@ archive_format_gnutar_header(struct archive_write *a, char h[512], } /* By truncating the mode here, we ensure it always fits. */ - format_octal(archive_entry_mode(entry) & 07777, + format_octal(archive_entry_mode(entry) & 0777777, h + GNUTAR_mode_offset, GNUTAR_mode_size); /* GNU tar supports base-256 here, so should never overflow. */