Skip to content

Commit 4a38edf

Browse files
authored
fix: witness changes in file sponge.hpp (#10345)
Static analyzer found that initial values in cache and state arrays weren't properly constrained. Initially state fill in 0 + iv value, but these values weren't constrained as witnesses. We replaced witness_t constructor with function create_constant_witness from class witness_t in file sponge.hpp. All tests for poseidon2s passed after fix.
1 parent cf05a7a commit 4a38edf

File tree

1 file changed

+4
-4
lines changed
  • barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/sponge

1 file changed

+4
-4
lines changed

barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/sponge/sponge.hpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,16 @@ template <size_t rate, size_t capacity, size_t t, typename Permutation, typename
5353
: builder(&builder_)
5454
{
5555
for (size_t i = 0; i < rate; ++i) {
56-
state[i] = witness_t<Builder>(builder, 0);
56+
state[i] = witness_t<Builder>::create_constant_witness(builder, 0);
5757
}
58-
state[rate] = witness_t<Builder>(builder, domain_iv.get_value());
58+
state[rate] = witness_t<Builder>::create_constant_witness(builder, domain_iv.get_value());
5959
}
6060

6161
std::array<field_t, rate> perform_duplex()
6262
{
6363
// zero-pad the cache
6464
for (size_t i = cache_size; i < rate; ++i) {
65-
cache[i] = witness_t<Builder>(builder, 0);
65+
cache[i] = witness_t<Builder>::create_constant_witness(builder, 0);
6666
}
6767
// add the cache into sponge state
6868
for (size_t i = 0; i < rate; ++i) {
@@ -122,7 +122,7 @@ template <size_t rate, size_t capacity, size_t t, typename Permutation, typename
122122
cache[i - 1] = cache[i];
123123
}
124124
cache_size -= 1;
125-
cache[cache_size] = witness_t<Builder>(builder, 0);
125+
cache[cache_size] = witness_t<Builder>::create_constant_witness(builder, 0);
126126
return result;
127127
}
128128

0 commit comments

Comments
 (0)