1
0
Fork 0
forked from suyu/suyu

nvhost_nvdec_common: Avoid memcpy with null pointers

Avoid sending null pointer to memcpy as reported by Undefined Behavious
Sanitizer.

Co-authored-by: LC <mathew1800@gmail.com>
This commit is contained in:
lat9nq 2021-04-04 18:38:49 -04:00
parent 69b2dbdffd
commit 2cc42e40c5

View file

@ -23,18 +23,23 @@ namespace {
template <typename T> template <typename T>
std::size_t SpliceVectors(const std::vector<u8>& input, std::vector<T>& dst, std::size_t count, std::size_t SpliceVectors(const std::vector<u8>& input, std::vector<T>& dst, std::size_t count,
std::size_t offset) { std::size_t offset) {
if (!dst.empty()) {
std::memcpy(dst.data(), input.data() + offset, count * sizeof(T)); std::memcpy(dst.data(), input.data() + offset, count * sizeof(T));
offset += count * sizeof(T); }
return offset; return 0;
} }
// Write vectors will write data to the output buffer // Write vectors will write data to the output buffer
template <typename T> template <typename T>
std::size_t WriteVectors(std::vector<u8>& dst, const std::vector<T>& src, std::size_t offset) { std::size_t WriteVectors(std::vector<u8>& dst, const std::vector<T>& src, std::size_t offset) {
if (src.empty()) {
return 0;
} else {
std::memcpy(dst.data() + offset, src.data(), src.size() * sizeof(T)); std::memcpy(dst.data() + offset, src.data(), src.size() * sizeof(T));
offset += src.size() * sizeof(T); offset += src.size() * sizeof(T);
return offset; return offset;
} }
}
} // Anonymous namespace } // Anonymous namespace
nvhost_nvdec_common::nvhost_nvdec_common(Core::System& system, std::shared_ptr<nvmap> nvmap_dev, nvhost_nvdec_common::nvhost_nvdec_common(Core::System& system, std::shared_ptr<nvmap> nvmap_dev,