@@ -44,12 +44,17 @@ auto RCache::add(RChunk const& chunk, std::span<char const> data) -> bool {
44
44
if (lookup_.contains (chunk.chunkId )) {
45
45
return false ;
46
46
}
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);
47
50
this ->add_internal (chunk, data);
48
51
return true ;
49
52
}
50
53
51
54
auto RCache::add_uncompressed (std::span<char const > src, int level, HashType hash_type) -> RChunk::Src {
52
55
rlib_assert (can_write ());
56
+ rlib_assert (src.size () <= RChunk::LIMIT);
57
+ rlib_assert (ZSTD_compressBound (src.size ()) <= RChunk::LIMIT);
53
58
auto id = RChunk::hash (src, hash_type);
54
59
std::lock_guard lock (this ->mutex_ );
55
60
if (auto c = this ->find_internal (id)) {
@@ -59,6 +64,7 @@ auto RCache::add_uncompressed(std::span<char const> src, int level, HashType has
59
64
thread_local Buffer buffer = {};
60
65
rlib_assert (buffer.resize_destroy (ZSTD_compressBound (src.size ())));
61
66
auto size = rlib_assert_zstd (ZSTD_compress (buffer.data (), buffer.size (), src.data (), src.size (), level));
67
+ rlib_assert (size <= RChunk::LIMIT);
62
68
auto chunk = RChunk::Src{};
63
69
chunk.chunkId = id;
64
70
chunk.uncompressed_size = src.size ();
0 commit comments