diff options
author | Konstantin Mandrika <kmandrika@google.com> | 2024-04-24 12:48:55 -0400 |
---|---|---|
committer | Joshua Peraza <jperaza@chromium.org> | 2024-04-24 17:19:58 +0000 |
commit | f88a1aa2af1d1fd795716365245761b89041139d (patch) | |
tree | 75657d0c5c2c45eeb27263dceb43f8792632a55c | |
parent | a8a43bad6fdb2d63b623862bea8f6bc959d8edc9 (diff) | |
download | google-breakpad-upstream-main.tar.gz |
Use zlib's uncompress() to uncompress headersupstream-main
Change-Id: Ib785633b229d3f17534da9b0de93255e80fddd70
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/5484086
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
-rw-r--r-- | src/common/linux/dump_symbols.cc | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/src/common/linux/dump_symbols.cc b/src/common/linux/dump_symbols.cc index b693fc9e..8e3b9742 100644 --- a/src/common/linux/dump_symbols.cc +++ b/src/common/linux/dump_symbols.cc @@ -315,31 +315,17 @@ uint32_t GetCompressionHeader( std::pair<uint8_t *, uint64_t> UncompressZlibSectionContents( const uint8_t* compressed_buffer, uint64_t compressed_size, uint64_t uncompressed_size) { - z_stream stream; - memset(&stream, 0, sizeof stream); - - stream.avail_in = compressed_size; - stream.avail_out = uncompressed_size; - stream.next_in = const_cast<uint8_t *>(compressed_buffer); - google_breakpad::scoped_array<uint8_t> uncompressed_buffer( new uint8_t[uncompressed_size]); - int status = inflateInit(&stream); - while (stream.avail_in != 0 && status == Z_OK) { - stream.next_out = - uncompressed_buffer.get() + uncompressed_size - stream.avail_out; + uLongf size = static_cast<uLongf>(uncompressed_size); - if ((status = inflate(&stream, Z_FINISH)) != Z_STREAM_END) { - break; - } - - status = inflateReset(&stream); - } + int status = uncompress( + uncompressed_buffer.get(), &size, compressed_buffer, compressed_size); - return inflateEnd(&stream) != Z_OK || status != Z_OK || stream.avail_out != 0 - ? std::make_pair(nullptr, 0) - : std::make_pair(uncompressed_buffer.release(), uncompressed_size); + return status != Z_OK + ? std::make_pair(nullptr, 0) + : std::make_pair(uncompressed_buffer.release(), uncompressed_size); } #ifdef HAVE_LIBZSTD |