diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2021-06-07 18:31:50 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2021-06-07 18:34:00 +0200 |
commit | 01d5c463be103a29662d2123cd37ae2f21b077a6 (patch) | |
tree | aec07e9d23605914d956cdb9b4b08817f0f34e48 /core/os | |
parent | 6f8d5cff66416993856bdb01c83b999b84425fb0 (diff) |
FileAccess: Don't err in `store_buffer` with buffer of size 0
The error check was added for `FileAccessUnix` but it's not an error when both
`p_src` and `p_length` are zero.
Added correct error checks to all implementations to prevent the actual
erroneous case: `p_src` is nullptr but `p_length > 0` (risk of null pointer
indexing).
Fixes #33564.
Diffstat (limited to 'core/os')
-rw-r--r-- | core/os/file_access.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp index 3d04e4e619..d21c0bd9a2 100644 --- a/core/os/file_access.cpp +++ b/core/os/file_access.cpp @@ -551,6 +551,7 @@ void FileAccess::store_csv_line(const Vector<String> &p_values, const String &p_ } void FileAccess::store_buffer(const uint8_t *p_src, uint64_t p_length) { + ERR_FAIL_COND(!p_src && p_length > 0); for (uint64_t i = 0; i < p_length; i++) { store_8(p_src[i]); } |