Merge topic 'archive-error-handling'

20fec15204 cmArchiveWrite: Check for construction errors on Open
e2c06736e5 libarchive: Add missing cm3p prefixes on includes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6470
This commit is contained in:
Brad King
2021-08-24 13:52:35 +00:00
committed by Kitware Robot
5 changed files with 31 additions and 7 deletions

View File

@@ -192,7 +192,13 @@ bool DebGenerator::generateDataTar() const
cmArchiveWrite data_tar(fileStream_data_tar, this->TarCompressionType,
this->DebianArchiveType, 0,
static_cast<int>(this->NumThreads));
data_tar.Open();
if (!data_tar.Open()) {
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Error opening the archive \""
<< filename_data_tar
<< "\", ERROR = " << data_tar.GetError() << std::endl);
return false;
}
// uid/gid should be the one of the root user, and this root user has
// always uid/gid equal to 0.
@@ -317,7 +323,13 @@ bool DebGenerator::generateControlTar(std::string const& md5Filename) const
cmArchiveWrite control_tar(fileStream_control_tar,
cmArchiveWrite::CompressGZip,
this->DebianArchiveType);
control_tar.Open();
if (!control_tar.Open()) {
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Error opening the archive \""
<< filename_control_tar
<< "\", ERROR = " << control_tar.GetError() << std::endl);
return false;
}
// sets permissions and uid/gid for the files
control_tar.SetUIDAndGID(0u, 0u);
@@ -457,7 +469,13 @@ bool DebGenerator::generateDeb() const
cmGeneratedFileStream debStream;
debStream.Open(outputPath, false, true);
cmArchiveWrite deb(debStream, cmArchiveWrite::CompressNone, "arbsd");
deb.Open();
if (!deb.Open()) {
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Error opening the archive \""
<< outputPath << "\", ERROR = " << deb.GetError()
<< std::endl);
return false;
}
// uid/gid should be the one of the root user, and this root user has
// always uid/gid equal to 0.

View File

@@ -250,6 +250,9 @@ cmArchiveWrite::cmArchiveWrite(std::ostream& os, Compress c,
bool cmArchiveWrite::Open()
{
if (!this->Error.empty()) {
return false;
}
if (archive_write_open(
this->Archive, this, nullptr,
reinterpret_cast<archive_write_callback*>(&Callback::Write),

View File

@@ -1629,7 +1629,10 @@ bool cmSystemTools::CreateTar(const std::string& outFileName,
cmArchiveWrite a(fout, compress, format.empty() ? "paxr" : format,
compressionLevel);
a.Open();
if (!a.Open()) {
cmSystemTools::Error(a.GetError());
return false;
}
a.SetMTime(mtime);
a.SetVerbose(verbose);
bool tarCreatedSuccessfully = true;

View File

@@ -36,7 +36,7 @@ __FBSDID("$FreeBSD$");
#elif HAVE_BSDXML_H
#include <bsdxml.h>
#elif HAVE_EXPAT_H
#include <expat.h>
#include <cm3p/expat.h>
#endif
#ifdef HAVE_BZLIB_H
#include <cm3p/bzlib.h>

View File

@@ -53,10 +53,10 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_zip.c 201102
#include <cm3p/zlib.h>
#endif
#ifdef HAVE_BZLIB_H
#include <bzlib.h>
#include <cm3p/bzlib.h>
#endif
#ifdef HAVE_LZMA_H
#include <lzma.h>
#include <cm3p/lzma.h>
#endif
#include "archive.h"