diff --git a/src/cmd/tar.c b/src/cmd/tar.c
index 576db67..1306ed4 100644
--- a/src/cmd/tar.c
+++ b/src/cmd/tar.c
@@ -78,31 +78,30 @@
 #define isreallink(lf)	((lf) == LF_LINK)
 #define issymlink(lf)	((lf) == LF_SYMLINK1 || (lf) == LF_SYMLINK2)
 
-typedef union {
-	uchar	data[Tblock];
-	struct {
-		char	name[Namsiz];
-		char	mode[8];
-		char	uid[8];
-		char	gid[8];
-		char	size[12];
-		char	mtime[12];
-		char	chksum[8];
-		char	linkflag;
-		char	linkname[Namsiz];
+typedef struct Hdr {
+	char	name[Namsiz];
+	char	mode[8];
+	char	uid[8];
+	char	gid[8];
+	char	size[12];
+	char	mtime[12];
+	char	chksum[8];
+	char	linkflag;
+	char	linkname[Namsiz];
 
-		/* rest are defined by POSIX's ustar format; see p1003.2b */
-		char	magic[6];	/* "ustar" */
-		char	version[2];
-		char	uname[32];
-		char	gname[32];
-		char	devmajor[8];
-		char	devminor[8];
-		char	prefix[Maxpfx]; /* if non-null, path= prefix "/" name */
-	};
+	/* rest are defined by POSIX's ustar format; see p1003.2b */
+	char	magic[6];	/* "ustar" */
+	char	version[2];
+	char	uname[32];
+	char	gname[32];
+	char	devmajor[8];
+	char	devminor[8];
+	char	prefix[Maxpfx]; /* if non-null, path= prefix "/" name */
+	
+	char pad[12];
 } Hdr;
 
-typedef struct {
+typedef struct Compress {
 	char	*comp;
 	char	*decomp;
 	char	*sfx[4];
@@ -115,7 +114,7 @@
 					  ".tar.bz2",".tbz2" },
 };
 
-typedef struct {
+typedef struct Pushstate {
 	int	kid;
 	int	fd;	/* original fd */
 	int	rfd;	/* replacement fd */
@@ -327,7 +326,7 @@
 	Hdr *hp = getblke(ar);
 
 	if (hp != nil)
-		memset(hp->data, 0, Tblock);
+		memset(hp, 0, Tblock);
 	return hp;
 }
 
@@ -400,7 +399,7 @@
 {
 	int n = Tblock;
 	long i = 0;
-	uchar *cp = hp->data;
+	uchar *cp = (uchar*)hp;
 	char oldsum[sizeof hp->chksum];
 
 	memmove(oldsum, hp->chksum, sizeof oldsum);
@@ -736,7 +735,7 @@
 			hbp = getblke(ar);
 			blksread = gothowmany(blksleft);
 			bytes = blksread * Tblock;
-			n = readn(fd, hbp->data, bytes);
+			n = readn(fd, hbp, bytes);
 			if (n < 0)
 				sysfatal("error reading %s: %r", file);
 			/*
@@ -744,7 +743,7 @@
 			 * compression and emergency recovery of data.
 			 */
 			if (n < Tblock)
-				memset(hbp->data + n, 0, bytes - n);
+				memset((uchar*)hbp + n, 0, bytes - n);
 			putblkmany(ar, blksread);
 		}
 		close(fd);
@@ -1008,7 +1007,7 @@
 		wrbytes = Tblock*blksread;
 		if(wrbytes > bytes)
 			wrbytes = bytes;
-		if (fd >= 0 && write(fd, hbp->data, wrbytes) != wrbytes)
+		if (fd >= 0 && write(fd, hbp, wrbytes) != wrbytes)
 			sysfatal("write error on %s: %r", fname);
 		putreadblks(ar, blksread);
 		bytes -= wrbytes;
@@ -1097,6 +1096,8 @@
 
 	fmtinstall('M', dirmodefmt);
 
+	if(sizeof(Hdr) != Tblock)
+		sysfatal("padding in hdr should be %d", Tblock-sizeof(Hdr)+sizeof(curblk->pad));
 	TARGBEGIN {
 	case 'c':
 		docreate++;
