diff options
author | Avi Drissman <avi@chromium.org> | 2023-12-12 17:44:37 +0000 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-12-12 09:55:18 -0800 |
commit | 69a2e01edd818a76949f4f499e14feac896aad8f (patch) | |
tree | 4fcdaf20ede5106f2395e5f7e4f1b97c569aafcc | |
parent | dd5fc1316c9bfe87091c4f418e427633590a84a4 (diff) | |
download | zlib-69a2e01edd818a76949f4f499e14feac896aad8f.tar.gz |
Add limitations to bit_cast
Using bit_cast on pointers does not accomplish anything useful, and
obscures what might be incorrect behavior. Do not allow base::bit_cast
to be misused in that way.
Bug: 1506769
Change-Id: Ib9f3acf954c5537c7520f72827854de81afda382
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5094596
Reviewed-by: Hongchan Choi <hongchan@chromium.org>
Reviewed-by: Ilya Sherman <isherman@chromium.org>
Reviewed-by: Will Harris <wfh@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Dominic Battre <battre@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
Reviewed-by: Adam Rice <ricea@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1236404}
NOKEYCHECK=True
GitOrigin-RevId: 70cb7f749d60410db4397c0fc3b35d189ad591ab
-rw-r--r-- | google/compression_utils.cc | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/google/compression_utils.cc b/google/compression_utils.cc index 279ea07..c2b17e4 100644 --- a/google/compression_utils.cc +++ b/google/compression_utils.cc @@ -4,7 +4,6 @@ #include "third_party/zlib/google/compression_utils.h" -#include "base/bit_cast.h" #include "base/check_op.h" #include "base/process/memory.h" #include "base/sys_byteorder.h" @@ -24,8 +23,8 @@ bool GzipCompress(base::span<const char> input, // uLongf can be larger than size_t. uLongf compressed_size_long = static_cast<uLongf>(output_buffer_size); if (zlib_internal::GzipCompressHelper( - base::bit_cast<Bytef*>(output_buffer), &compressed_size_long, - base::bit_cast<const Bytef*>(input.data()), + reinterpret_cast<Bytef*>(output_buffer), &compressed_size_long, + reinterpret_cast<const Bytef*>(input.data()), static_cast<uLongf>(input.size()), malloc_fn, free_fn) != Z_OK) { return false; } @@ -55,7 +54,7 @@ bool GzipCompress(base::span<const uint8_t> input, std::string* output) { if (zlib_internal::GzipCompressHelper( compressed_data, &compressed_data_size, - base::bit_cast<const Bytef*>(input.data()), input_size, nullptr, + reinterpret_cast<const Bytef*>(input.data()), input_size, nullptr, nullptr) != Z_OK) { free(compressed_data); return false; @@ -82,8 +81,8 @@ bool GzipUncompress(const std::string& input, std::string* output) { uncompressed_output.resize(uncompressed_size); if (zlib_internal::GzipUncompressHelper( - base::bit_cast<Bytef*>(uncompressed_output.data()), - &uncompressed_size, base::bit_cast<const Bytef*>(input.data()), + reinterpret_cast<Bytef*>(uncompressed_output.data()), + &uncompressed_size, reinterpret_cast<const Bytef*>(input.data()), static_cast<uLongf>(input.length())) == Z_OK) { output->swap(uncompressed_output); return true; @@ -102,8 +101,8 @@ bool GzipUncompress(base::span<const uint8_t> input, if (uncompressed_size > output.size()) return false; return zlib_internal::GzipUncompressHelper( - base::bit_cast<Bytef*>(output.data()), &uncompressed_size, - base::bit_cast<const Bytef*>(input.data()), + reinterpret_cast<Bytef*>(const_cast<uint8_t*>(output.data())), + &uncompressed_size, reinterpret_cast<const Bytef*>(input.data()), static_cast<uLongf>(input.size())) == Z_OK; } @@ -117,8 +116,8 @@ bool GzipUncompress(base::span<const uint8_t> input, std::string* output) { uLongf uncompressed_size = GetUncompressedSize(input); output->resize(uncompressed_size); return zlib_internal::GzipUncompressHelper( - base::bit_cast<Bytef*>(output->data()), &uncompressed_size, - base::bit_cast<const Bytef*>(input.data()), + reinterpret_cast<Bytef*>(output->data()), &uncompressed_size, + reinterpret_cast<const Bytef*>(input.data()), static_cast<uLongf>(input.size())) == Z_OK; } @@ -128,7 +127,8 @@ uint32_t GetUncompressedSize(base::span<const char> compressed_data) { uint32_t GetUncompressedSize(base::span<const uint8_t> compressed_data) { return zlib_internal::GetGzipUncompressedSize( - base::bit_cast<Bytef*>(compressed_data.data()), compressed_data.size()); + reinterpret_cast<const Bytef*>(compressed_data.data()), + compressed_data.size()); } } // namespace compression |