More size shrinkage.
diff --git a/archival/libunarchive/data_extract_to_buffer.c b/archival/libunarchive/data_extract_to_buffer.c
index 1255fe1..3eaca98 100644
--- a/archival/libunarchive/data_extract_to_buffer.c
+++ b/archival/libunarchive/data_extract_to_buffer.c
@@ -1,17 +1,7 @@
 /*
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
+ * Copyright 2002 Glenn McGrath
  *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
 #include "libbb.h"
@@ -21,8 +11,7 @@
 {
 	const unsigned int size = archive_handle->file_header->size;
 
-	archive_handle->buffer = xmalloc(size + 1);
+	archive_handle->buffer = xzalloc(size + 1);
 
 	archive_xread_all(archive_handle, archive_handle->buffer, size);
-	archive_handle->buffer[size] = '\0';
 }
diff --git a/archival/libunarchive/decompress_bunzip2.c b/archival/libunarchive/decompress_bunzip2.c
index 5e26ffd..ae96ea3 100644
--- a/archival/libunarchive/decompress_bunzip2.c
+++ b/archival/libunarchive/decompress_bunzip2.c
@@ -644,8 +644,7 @@
 
 	/* Allocate bunzip_data.  Most fields initialize to zero. */
 
-	bd=*bdp=xmalloc(i);
-	memset(bd,0,sizeof(bunzip_data));
+	bd=*bdp=xzalloc(i);
 
 	/* Setup input buffer */
 
diff --git a/archival/libunarchive/get_header_ar.c b/archival/libunarchive/get_header_ar.c
index 385f33d..69c4bf2 100644
--- a/archival/libunarchive/get_header_ar.c
+++ b/archival/libunarchive/get_header_ar.c
@@ -1,17 +1,6 @@
-/*
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
+/* Copyright 2001 Glenn McGrath.
  *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
 #include <stdio.h>
diff --git a/archival/libunarchive/get_header_cpio.c b/archival/libunarchive/get_header_cpio.c
index 2bbcd8e..f54b5af 100644
--- a/archival/libunarchive/get_header_cpio.c
+++ b/archival/libunarchive/get_header_cpio.c
@@ -1,17 +1,6 @@
-/*
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
+/* Copyright 2002 Laurence Anderson
  *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
 #include <stdio.h>
@@ -85,9 +74,8 @@
 	    file_header->size = tmpsize;
 	}
 
-	file_header->name = (char *) xmalloc(namesize + 1);
+	file_header->name = (char *) xzalloc(namesize + 1);
 	archive_xread_all(archive_handle, file_header->name, namesize); /* Read in filename */
-	file_header->name[namesize] = '\0';
 	archive_handle->offset += namesize;
 
 	/* Update offset amount and skip padding before file contents */
@@ -113,9 +101,8 @@
 	}
 
 	if (S_ISLNK(file_header->mode)) {
-		file_header->link_name = (char *) xmalloc(file_header->size + 1);
+		file_header->link_name = (char *) xzalloc(file_header->size + 1);
 		archive_xread_all(archive_handle, file_header->link_name, file_header->size);
-		file_header->link_name[file_header->size] = '\0';
 		archive_handle->offset += file_header->size;
 		file_header->size = 0; /* Stop possible seeks in future */
 	} else {
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c
index c9308f9..f3f04b5 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -168,17 +168,15 @@
 		break;
 #ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
 	case 'L': {
-			longname = xmalloc(file_header->size + 1);
+			longname = xzalloc(file_header->size + 1);
 			archive_xread_all(archive_handle, longname, file_header->size);
-			longname[file_header->size] = '\0';
 			archive_handle->offset += file_header->size;
 
 			return(get_header_tar(archive_handle));
 		}
 	case 'K': {
-			linkname = xmalloc(file_header->size + 1);
+			linkname = xzalloc(file_header->size + 1);
 			archive_xread_all(archive_handle, linkname, file_header->size);
-			linkname[file_header->size] = '\0';
 			archive_handle->offset += file_header->size;
 
 			file_header->name = linkname;
diff --git a/archival/libunarchive/rangecoder.h b/archival/libunarchive/rangecoder.h
index e43ec39..b806eeb 100644
--- a/archival/libunarchive/rangecoder.h
+++ b/archival/libunarchive/rangecoder.h
@@ -36,12 +36,12 @@
 }
 
 /* Called once */
-static ATTRIBUTE_ALWAYS_INLINE void rc_init(rc_t * rc, int fd, int buffer_size)
+static void rc_init(rc_t * rc, int fd, int buffer_size)
 {
 	int i;
 
 	rc->fd = fd;
-	rc->buffer = malloc(buffer_size);
+	rc->buffer = xmalloc(buffer_size);
 	rc->buffer_size = buffer_size;
 	rc->buffer_end = rc->buffer + rc->buffer_size;
 	rc->ptr = rc->buffer_end;