diff --git a/src/dwarfs/compression/brotli.cpp b/src/dwarfs/compression/brotli.cpp
index 0709a6c7..d3426b5b 100644
--- a/src/dwarfs/compression/brotli.cpp
+++ b/src/dwarfs/compression/brotli.cpp
@@ -19,6 +19,8 @@
* along with dwarfs. If not, see .
*/
+#include
+
#include
#include
@@ -114,6 +116,15 @@ class brotli_block_decompressor final : public block_decompressor::impl {
bool decompress_frame(size_t frame_size) override {
size_t pos = decompressed_.size();
+
+ if (pos + frame_size > uncompressed_size_) {
+ assert(uncompressed_size_ >= pos);
+ frame_size = uncompressed_size_ - pos;
+ }
+
+ assert(pos + frame_size <= uncompressed_size_);
+ assert(frame_size > 0);
+
decompressed_.resize(pos + frame_size);
uint8_t* next_out = &decompressed_[pos];