Skip to content

Commit 0ffb30b

Browse files
authored
Merge pull request #4895 from reneme/fix/test_assumption_of_potential_side_effect
2 parents 1f0ab5c + 42bd56b commit 0ffb30b

File tree

1 file changed

+37
-11
lines changed

1 file changed

+37
-11
lines changed

src/tests/test_aead.cpp

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,19 @@ class AEAD_Tests final : public Text_Based_Test {
4040
result.confirm("AEAD name is not empty", !enc->name().empty());
4141
result.confirm("AEAD default nonce size is accepted", enc->valid_nonce_length(enc->default_nonce_length()));
4242

43-
Botan::secure_vector<uint8_t> garbage = rng.random_vec(enc->update_granularity());
43+
auto get_garbage = [&] { return rng.random_vec(enc->update_granularity()); };
4444

4545
if(is_siv == false) {
46-
result.test_throws("Unkeyed object throws for encrypt", [&]() { enc->update(garbage); });
46+
result.test_throws("Unkeyed object throws for encrypt", [&]() {
47+
auto garbage = get_garbage();
48+
enc->update(garbage);
49+
});
4750
}
4851

49-
result.test_throws("Unkeyed object throws for encrypt", [&]() { enc->finish(garbage); });
52+
result.test_throws("Unkeyed object throws for encrypt", [&]() {
53+
auto garbage = get_garbage();
54+
enc->finish(garbage);
55+
});
5056

5157
if(enc->associated_data_requires_key()) {
5258
result.test_throws("Unkeyed object throws for set AD",
@@ -61,12 +67,20 @@ class AEAD_Tests final : public Text_Based_Test {
6167
result.test_eq("key is set", enc->has_keying_material(), true);
6268

6369
if(is_siv == false) {
64-
result.test_throws("Cannot process data until nonce is set (enc)", [&]() { enc->update(garbage); });
65-
result.test_throws("Cannot process data until nonce is set (enc)", [&]() { enc->finish(garbage); });
70+
result.test_throws("Cannot process data until nonce is set (enc)", [&]() {
71+
auto garbage = get_garbage();
72+
enc->update(garbage);
73+
});
74+
result.test_throws("Cannot process data until nonce is set (enc)", [&]() {
75+
auto garbage = get_garbage();
76+
enc->finish(garbage);
77+
});
6678
}
6779

6880
enc->set_associated_data(mutate_vec(ad, rng));
6981
enc->start(mutate_vec(nonce, rng));
82+
83+
auto garbage = get_garbage();
7084
enc->update(garbage);
7185

7286
// reset message specific state
@@ -195,13 +209,19 @@ class AEAD_Tests final : public Text_Based_Test {
195209

196210
result.test_eq("AEAD decrypt output_length is correct", dec->output_length(input.size()), expected.size());
197211

198-
Botan::secure_vector<uint8_t> garbage = rng.random_vec(dec->update_granularity());
212+
auto get_garbage = [&] { return rng.random_vec(dec->update_granularity()); };
199213

200214
if(is_siv == false) {
201-
result.test_throws("Unkeyed object throws for decrypt", [&]() { dec->update(garbage); });
215+
result.test_throws("Unkeyed object throws for decrypt", [&]() {
216+
auto garbage = get_garbage();
217+
dec->update(garbage);
218+
});
202219
}
203220

204-
result.test_throws("Unkeyed object throws for decrypt", [&]() { dec->finish(garbage); });
221+
result.test_throws("Unkeyed object throws for decrypt", [&]() {
222+
auto garbage = get_garbage();
223+
dec->finish(garbage);
224+
});
205225

206226
if(dec->associated_data_requires_key()) {
207227
result.test_throws("Unkeyed object throws for set AD",
@@ -216,12 +236,18 @@ class AEAD_Tests final : public Text_Based_Test {
216236
dec->set_associated_data(mutate_vec(ad, rng));
217237

218238
if(is_siv == false) {
219-
result.test_throws("Cannot process data until nonce is set (dec)", [&]() { dec->update(garbage); });
220-
result.test_throws("Cannot process data until nonce is set (dec)", [&]() { dec->finish(garbage); });
239+
result.test_throws("Cannot process data until nonce is set (dec)", [&]() {
240+
auto garbage = get_garbage();
241+
dec->update(garbage);
242+
});
243+
result.test_throws("Cannot process data until nonce is set (dec)", [&]() {
244+
auto garbage = get_garbage();
245+
dec->finish(garbage);
246+
});
221247
}
222248

223249
dec->start(mutate_vec(nonce, rng));
224-
250+
auto garbage = get_garbage();
225251
dec->update(garbage);
226252

227253
// reset message specific state

0 commit comments

Comments
 (0)