in xar/XarParserTest.cpp [365:393]
void makeXar(
const std::string& header,
bool includeMagic,
const std::vector<uint8_t>& magic) {
const auto filenameTemplate = std::filesystem::temp_directory_path()
.append("test_xar_headerXXXXXX")
.string();
char* filename = new char[filenameTemplate.size() + 1];
::strncpy(filename, filenameTemplate.c_str(), filenameTemplate.size() + 1);
fdHolder_ = std::make_unique<SelfClosingFdHolder>(::mkstemp(filename));
ASSERT_GE(fdHolder_->fd_, 0) << "Failed to make temporary file" << errno;
// Delete the temp file later on ::close
::unlink(filename);
int bytes;
if (includeMagic) {
char buf[kTestHeaderSize + magic.size() + 1];
memset(buf, 0, sizeof(buf));
EXPECT_LE(header.size(), kTestHeaderSize);
::strncpy(buf, header.c_str(), sizeof(buf));
::memcpy(&buf[kTestHeaderSize], magic.data(), magic.size());
bytes = tools::xar::writeFull(fdHolder_->fd_, buf, sizeof(buf));
ASSERT_EQ(bytes, sizeof(buf));
} else {
bytes =
tools::xar::writeFull(fdHolder_->fd_, header.c_str(), header.size());
ASSERT_EQ(bytes, header.size());
}
}