diff options
author | Brad King <brad.king@kitware.com> | 2012-11-26 16:56:31 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2012-11-26 16:56:31 (GMT) |
commit | 82b077395dad015e0af6c11cec12a3daa7b03cb1 (patch) | |
tree | 48bfa7ee5de6e0476d89acb7f62f18b4d3670970 | |
parent | 84740c744863314effa7bf1ad32eeb2e9ae79036 (diff) | |
parent | 37c34d7d7b7b32c0f6c00acbb3375c79e42a5587 (diff) | |
download | CMake-82b077395dad015e0af6c11cec12a3daa7b03cb1.zip CMake-82b077395dad015e0af6c11cec12a3daa7b03cb1.tar.gz CMake-82b077395dad015e0af6c11cec12a3daa7b03cb1.tar.bz2 |
Merge branch 'fix-untar-infinite-loop' into release
-rw-r--r-- | Source/cmSystemTools.cxx | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 89f03f6..544f7e4 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1932,6 +1932,7 @@ bool extract_tar(const char* outFileName, bool verbose, { cmSystemTools::Error("Problem with archive_read_next_header(): ", archive_error_string(a)); + break; } if (verbose && extract) { @@ -1954,6 +1955,7 @@ bool extract_tar(const char* outFileName, bool verbose, cmSystemTools::Error( "Problem with archive_write_disk_set_options(): ", archive_error_string(ext)); + break; } r = archive_write_header(ext, entry); @@ -1963,6 +1965,7 @@ bool extract_tar(const char* outFileName, bool verbose, archive_error_string(ext)); cmSystemTools::Error("Current file:", archive_entry_pathname(entry)); + break; } else { @@ -1972,6 +1975,7 @@ bool extract_tar(const char* outFileName, bool verbose, { cmSystemTools::Error("Problem with archive_write_finish_entry(): ", archive_error_string(ext)); + break; } } } @@ -1982,8 +1986,7 @@ bool extract_tar(const char* outFileName, bool verbose, } archive_read_close(a); archive_read_finish(a); - return true; - + return r == ARCHIVE_EOF || r == ARCHIVE_OK; } } #endif |