diff options
author | Matt Kraai <kraai@debian.org> | 2000-11-18 04:28:57 +0300 |
---|---|---|
committer | Matt Kraai <kraai@debian.org> | 2000-11-18 04:28:57 +0300 |
commit | ab8f9e286b15e043099d5b28b650e57823f8d273 (patch) | |
tree | 6250de1e3ab413d388d1198da72cd7fb76558aec | |
parent | 768a2340b557f01738bf5944463a6fc4d70f0b21 (diff) |
Check for archive errors even for files we aren't extracting.
-rw-r--r-- | archival/tar.c | 12 | ||||
-rw-r--r-- | tar.c | 12 |
2 files changed, 16 insertions, 8 deletions
diff --git a/archival/tar.c b/archival/tar.c index 07c0e7105..a845df166 100644 --- a/archival/tar.c +++ b/archival/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; } } @@ -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; } } |