aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2004-04-29 09:24:19 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2004-04-29 09:24:19 +0000
commitfaa3546fd74bcb6cf193bebe8662a718e13d8fdf (patch)
treebd91fdd6432939f0b39bfb585b3c07b7e49357c1
parentf71ad6c9e487dc853ba6f7e1c238efdd4ed140a8 (diff)
downloadbusybox-w32-faa3546fd74bcb6cf193bebe8662a718e13d8fdf.tar.gz
busybox-w32-faa3546fd74bcb6cf193bebe8662a718e13d8fdf.tar.bz2
busybox-w32-faa3546fd74bcb6cf193bebe8662a718e13d8fdf.zip
Fix symlink handling and small memory leak
-rw-r--r--archival/libunarchive/get_header_cpio.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/archival/libunarchive/get_header_cpio.c b/archival/libunarchive/get_header_cpio.c
index e8a68f1c3..f72c37634 100644
--- a/archival/libunarchive/get_header_cpio.c
+++ b/archival/libunarchive/get_header_cpio.c
@@ -117,6 +117,8 @@ extern char get_header_cpio(archive_handle_t *archive_handle)
117 file_header->link_name[file_header->size] = '\0'; 117 file_header->link_name[file_header->size] = '\0';
118 archive_handle->offset += file_header->size; 118 archive_handle->offset += file_header->size;
119 file_header->size = 0; /* Stop possible seeks in future */ 119 file_header->size = 0; /* Stop possible seeks in future */
120 } else {
121 file_header->link_name = NULL;
120 } 122 }
121 if (nlink > 1 && !S_ISDIR(file_header->mode)) { 123 if (nlink > 1 && !S_ISDIR(file_header->mode)) {
122 if (file_header->size == 0) { /* Put file on a linked list for later */ 124 if (file_header->size == 0) { /* Put file on a linked list for later */
@@ -151,5 +153,8 @@ extern char get_header_cpio(archive_handle_t *archive_handle)
151 } 153 }
152 154
153 archive_handle->offset += file_header->size; 155 archive_handle->offset += file_header->size;
156
157 free(file_header->link_name);
158
154 return (EXIT_SUCCESS); 159 return (EXIT_SUCCESS);
155} 160}