소스 검색

Merge pull request #6145 from lat9nq/nvhost_empty_memcpy

nvhost_nvdec_common: Avoid memcpy with null pointers
bunnei 5 년 전
부모
커밋
dfac2e2d25
1개의 변경된 파일11개의 추가작업 그리고 6개의 파일을 삭제
  1. 11 6
      src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp

+ 11 - 6
src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp

@@ -23,17 +23,22 @@ 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) {
-    std::memcpy(dst.data(), input.data() + offset, count * sizeof(T));
-    offset += count * sizeof(T);
-    return offset;
+    if (!dst.empty()) {
+        std::memcpy(dst.data(), input.data() + offset, count * sizeof(T));
+    }
+    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) {
-    std::memcpy(dst.data() + offset, src.data(), src.size() * sizeof(T));
-    offset += src.size() * sizeof(T);
-    return offset;
+    if (src.empty()) {
+        return 0;
+    } else {
+        std::memcpy(dst.data() + offset, src.data(), src.size() * sizeof(T));
+        offset += src.size() * sizeof(T);
+        return offset;
+    }
 }
 }
 } // Anonymous namespace
 } // Anonymous namespace