aboutsummaryrefslogtreecommitdiff
path: root/tar.c
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2000-11-18 01:28:57 +0000
committerMatt Kraai <kraai@debian.org>2000-11-18 01:28:57 +0000
commitab8f9e286b15e043099d5b28b650e57823f8d273 (patch)
tree6250de1e3ab413d388d1198da72cd7fb76558aec /tar.c
parent768a2340b557f01738bf5944463a6fc4d70f0b21 (diff)
downloadbusybox-ab8f9e286b15e043099d5b28b650e57823f8d273.tar.gz
Check for archive errors even for files we aren't extracting.
Diffstat (limited to 'tar.c')
-rw-r--r--tar.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/tar.c b/tar.c
index 07c0e7105..a845df166 100644
--- a/tar.c
+++ b/tar.c
@@ -530,13 +530,15 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
/* Skip funky extra GNU headers that precede long files */
if ( (header.type == GNULONGNAME) || (header.type == GNULONGLINK) ) {
skipNextHeaderFlag=TRUE;
- tarExtractRegularFile(&header, FALSE, FALSE);
+ if (tarExtractRegularFile(&header, FALSE, FALSE) == FALSE)
+ errorFlag = TRUE;
continue;
}
if ( skipNextHeaderFlag == TRUE ) {
skipNextHeaderFlag=FALSE;
errorMsg(name_longer_than_foo, NAME_SIZE);
- tarExtractRegularFile(&header, FALSE, FALSE);
+ if (tarExtractRegularFile(&header, FALSE, FALSE) == FALSE)
+ errorFlag = TRUE;
continue;
}
@@ -555,7 +557,8 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
* the extractFlag set to FALSE, so the junk in the tarball
* is properly skipped over */
if ( header.type==REGTYPE || header.type==REGTYPE0 ) {
- tarExtractRegularFile(&header, FALSE, FALSE);
+ if (tarExtractRegularFile(&header, FALSE, FALSE) == FALSE)
+ errorFlag = TRUE;
}
skipFlag=TRUE;
break;
@@ -583,7 +586,8 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
/* There are not the droids you're looking for, move along */
if (skipFlag == TRUE) {
if ( header.type==REGTYPE || header.type==REGTYPE0 )
- tarExtractRegularFile(&header, FALSE, FALSE);
+ if (tarExtractRegularFile(&header, FALSE, FALSE) == FALSE)
+ errorFlag = TRUE;
continue;
}
}