diff --git a/src/port/tar.c b/src/port/tar.c
index 09fd6c10d34e0c576b8fadc1dc06cd3656db5249..8ef4f9c3883099f0ad4f8349cfdedaa42e919a69 100644
--- a/src/port/tar.c
+++ b/src/port/tar.c
@@ -77,8 +77,8 @@ tarCreateHeader(char *h, const char *filename, const char *linktarget,
 		h[flen + 1] = '\0';
 	}
 
-	/* Mode 8 */
-	sprintf(&h[100], "%07o ", (int) mode);
+	/* Mode 8 - this doesn't include the file type bits (S_IFMT)  */
+	sprintf(&h[100], "%07o ", (int) (mode & 07777));
 
 	/* User ID 8 */
 	sprintf(&h[108], "%07o ", (int) uid);