aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2001-10-12 19:00:15 +0000
committerMatt Kraai <kraai@debian.org>2001-10-12 19:00:15 +0000
commitf86bbfaddd5803a173d51e41f18af9310f7a612c (patch)
tree791f4ff12dd1f384c9567eea16421af06f7bdac2
parent9b2589dafde8efc5327e597690c84bfbfe42d53f (diff)
downloadbusybox-w32-f86bbfaddd5803a173d51e41f18af9310f7a612c.tar.gz
busybox-w32-f86bbfaddd5803a173d51e41f18af9310f7a612c.tar.bz2
busybox-w32-f86bbfaddd5803a173d51e41f18af9310f7a612c.zip
Fix tar segfault when include list is empty and exclude list is not.
-rw-r--r--Changelog2
-rw-r--r--archival/tar.c9
-rw-r--r--tar.c9
3 files changed, 14 insertions, 6 deletions
diff --git a/Changelog b/Changelog
index c34a7e470..6017ccb1d 100644
--- a/Changelog
+++ b/Changelog
@@ -20,6 +20,8 @@
20 -- Fix sed s/[/]// handling (closes: #1208). 20 -- Fix sed s/[/]// handling (closes: #1208).
21 -- Fix `-/bin/sh' invocation (closes: #1209). 21 -- Fix `-/bin/sh' invocation (closes: #1209).
22 -- Fix ash exec (noted by Arne Bernin). 22 -- Fix ash exec (noted by Arne Bernin).
23 -- Fix tar segfault when include list is empty and exclude list is
24 not.
23 * Magick 25 * Magick
24 -- made init run inittab command's in the order they show up 26 -- made init run inittab command's in the order they show up
25 in the inittab file (FIFO instead of LIFO). 27 in the inittab file (FIFO instead of LIFO).
diff --git a/archival/tar.c b/archival/tar.c
index cd563393b..ea0247e56 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -528,7 +528,10 @@ char **merge_list(char **include_list, char **exclude_list)
528 int new_include_count = 0; 528 int new_include_count = 0;
529 int include_count = 0; 529 int include_count = 0;
530 int exclude_count; 530 int exclude_count;
531 531
532 if (include_list == NULL)
533 return exclude_list;
534
532 while (include_list[include_count] != NULL) { 535 while (include_list[include_count] != NULL) {
533 int found = FALSE; 536 int found = FALSE;
534 exclude_count = 0; 537 exclude_count = 0;
@@ -684,8 +687,8 @@ int tar_main(int argc, char **argv)
684#ifdef BB_FEATURE_TAR_EXCLUDE 687#ifdef BB_FEATURE_TAR_EXCLUDE
685 /* Remove excluded files from the include list */ 688 /* Remove excluded files from the include list */
686 if (exclude_list != NULL) { 689 if (exclude_list != NULL) {
687 /* If both an exclude and include file list was present then 690 /* If both an exclude and include file list were present then
688 * its an exclude from include list only, if not its really an 691 * it's an exclude from include list only, if not it's really an
689 * exclude list (and a poor choice of variable names) */ 692 * exclude list (and a poor choice of variable names) */
690 if (include_list == NULL) { 693 if (include_list == NULL) {
691 extract_function |= extract_exclude_list; 694 extract_function |= extract_exclude_list;
diff --git a/tar.c b/tar.c
index cd563393b..ea0247e56 100644
--- a/tar.c
+++ b/tar.c
@@ -528,7 +528,10 @@ char **merge_list(char **include_list, char **exclude_list)
528 int new_include_count = 0; 528 int new_include_count = 0;
529 int include_count = 0; 529 int include_count = 0;
530 int exclude_count; 530 int exclude_count;
531 531
532 if (include_list == NULL)
533 return exclude_list;
534
532 while (include_list[include_count] != NULL) { 535 while (include_list[include_count] != NULL) {
533 int found = FALSE; 536 int found = FALSE;
534 exclude_count = 0; 537 exclude_count = 0;
@@ -684,8 +687,8 @@ int tar_main(int argc, char **argv)
684#ifdef BB_FEATURE_TAR_EXCLUDE 687#ifdef BB_FEATURE_TAR_EXCLUDE
685 /* Remove excluded files from the include list */ 688 /* Remove excluded files from the include list */
686 if (exclude_list != NULL) { 689 if (exclude_list != NULL) {
687 /* If both an exclude and include file list was present then 690 /* If both an exclude and include file list were present then
688 * its an exclude from include list only, if not its really an 691 * it's an exclude from include list only, if not it's really an
689 * exclude list (and a poor choice of variable names) */ 692 * exclude list (and a poor choice of variable names) */
690 if (include_list == NULL) { 693 if (include_list == NULL) {
691 extract_function |= extract_exclude_list; 694 extract_function |= extract_exclude_list;