readlink(2) does not NULL terminate the buffer it reads in, but tar expected it
to do so.  This caused symlinks stored in tarballs to likely have trailing
crap in the stored symlink named.  Oops.
 -Erik
diff --git a/tar.c b/tar.c
index 1b783f0..836d127 100644
--- a/tar.c
+++ b/tar.c
@@ -824,12 +824,15 @@
 
 	/* WARNING/NOTICE: I break Hard Links */
 	if (S_ISLNK(statbuf->st_mode)) {
+		int link_size=0;
 		char buffer[BUFSIZ];
 		header.typeflag  = SYMTYPE;
-		if ( readlink(fileName, buffer, sizeof(buffer) - 1) < 0) {
+		link_size = readlink(fileName, buffer, sizeof(buffer) - 1);
+		if ( link_size < 0) {
 			errorMsg("Error reading symlink '%s': %s\n", header.name, strerror(errno));
 			return ( FALSE);
 		}
+		buffer[link_size] = '\0';
 		strncpy(header.linkname, buffer, sizeof(header.linkname)); 
 	} else if (S_ISDIR(statbuf->st_mode)) {
 		header.typeflag  = DIRTYPE;