Skip to content

Commit d86bbe3

Browse files
committed
Assert chunk limits when adding to bundle
1 parent 7b527ec commit d86bbe3

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

lib/rlib/rcache.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,17 @@ auto RCache::add(RChunk const& chunk, std::span<char const> data) -> bool {
4444
if (lookup_.contains(chunk.chunkId)) {
4545
return false;
4646
}
47+
rlib_assert(chunk.compressed_size <= RChunk::LIMIT);
48+
rlib_assert(chunk.uncompressed_size <= RChunk::LIMIT);
49+
rlib_assert(ZSTD_compressBound(chunk.compressed_size) <= RChunk::LIMIT);
4750
this->add_internal(chunk, data);
4851
return true;
4952
}
5053

5154
auto RCache::add_uncompressed(std::span<char const> src, int level, HashType hash_type) -> RChunk::Src {
5255
rlib_assert(can_write());
56+
rlib_assert(src.size() <= RChunk::LIMIT);
57+
rlib_assert(ZSTD_compressBound(src.size()) <= RChunk::LIMIT);
5358
auto id = RChunk::hash(src, hash_type);
5459
std::lock_guard lock(this->mutex_);
5560
if (auto c = this->find_internal(id)) {
@@ -59,6 +64,7 @@ auto RCache::add_uncompressed(std::span<char const> src, int level, HashType has
5964
thread_local Buffer buffer = {};
6065
rlib_assert(buffer.resize_destroy(ZSTD_compressBound(src.size())));
6166
auto size = rlib_assert_zstd(ZSTD_compress(buffer.data(), buffer.size(), src.data(), src.size(), level));
67+
rlib_assert(size <= RChunk::LIMIT);
6268
auto chunk = RChunk::Src{};
6369
chunk.chunkId = id;
6470
chunk.uncompressed_size = src.size();

0 commit comments

Comments
 (0)