зеркало из https://github.com/electron/electron.git
fix: -Wunsafe-buffer-usage warnings in asar file IO (#43624)
* fix: -Wunsafe-buffer-usage warnings in ScopedTemporaryFile::InitFromFile() * fix: -Wunsafe-buffer-usage warnings in Archive::Init()
This commit is contained in:
Родитель
5718ea4e1e
Коммит
f1019c2c4a
|
@ -201,22 +201,19 @@ bool Archive::Init() {
|
|||
return false;
|
||||
}
|
||||
|
||||
std::vector<char> buf;
|
||||
int len;
|
||||
std::vector<uint8_t> buf;
|
||||
|
||||
buf.resize(8);
|
||||
{
|
||||
electron::ScopedAllowBlockingForElectron allow_blocking;
|
||||
len = file_.ReadAtCurrentPos(buf.data(), buf.size());
|
||||
}
|
||||
if (len != static_cast<int>(buf.size())) {
|
||||
PLOG(ERROR) << "Failed to read header size from " << path_.value();
|
||||
return false;
|
||||
if (!file_.ReadAtCurrentPosAndCheck(buf)) {
|
||||
PLOG(ERROR) << "Failed to read header size from " << path_.value();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t size;
|
||||
if (!base::PickleIterator(base::Pickle::WithData(base::as_byte_span(buf)))
|
||||
.ReadUInt32(&size)) {
|
||||
if (!base::PickleIterator(base::Pickle::WithData(buf)).ReadUInt32(&size)) {
|
||||
LOG(ERROR) << "Failed to parse header size from " << path_.value();
|
||||
return false;
|
||||
}
|
||||
|
@ -224,16 +221,14 @@ bool Archive::Init() {
|
|||
buf.resize(size);
|
||||
{
|
||||
electron::ScopedAllowBlockingForElectron allow_blocking;
|
||||
len = file_.ReadAtCurrentPos(buf.data(), buf.size());
|
||||
}
|
||||
if (len != static_cast<int>(buf.size())) {
|
||||
PLOG(ERROR) << "Failed to read header from " << path_.value();
|
||||
return false;
|
||||
if (!file_.ReadAtCurrentPosAndCheck(buf)) {
|
||||
PLOG(ERROR) << "Failed to read header from " << path_.value();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
std::string header;
|
||||
if (!base::PickleIterator(base::Pickle::WithData(base::as_byte_span(buf)))
|
||||
.ReadString(&header)) {
|
||||
if (!base::PickleIterator(base::Pickle::WithData(buf)).ReadString(&header)) {
|
||||
LOG(ERROR) << "Failed to parse header from " << path_.value();
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -62,20 +62,15 @@ bool ScopedTemporaryFile::InitFromFile(
|
|||
return false;
|
||||
|
||||
electron::ScopedAllowBlockingForElectron allow_blocking;
|
||||
std::vector<char> buf(size);
|
||||
int len = src->Read(offset, buf.data(), buf.size());
|
||||
if (len != static_cast<int>(size))
|
||||
std::vector<uint8_t> buf(size);
|
||||
if (!src->ReadAndCheck(offset, buf))
|
||||
return false;
|
||||
|
||||
if (integrity)
|
||||
ValidateIntegrityOrDie(base::as_byte_span(buf), *integrity);
|
||||
ValidateIntegrityOrDie(buf, *integrity);
|
||||
|
||||
base::File dest(path_, base::File::FLAG_OPEN | base::File::FLAG_WRITE);
|
||||
if (!dest.IsValid())
|
||||
return false;
|
||||
|
||||
return dest.WriteAtCurrentPos(buf.data(), buf.size()) ==
|
||||
static_cast<int>(size);
|
||||
return dest.IsValid() && dest.WriteAtCurrentPosAndCheck(buf);
|
||||
}
|
||||
|
||||
} // namespace asar
|
||||
|
|
Загрузка…
Ссылка в новой задаче