summaryrefslogtreecommitdiff
path: root/src/tools/fuzzing/fuzzing.cpp
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2023-03-13 10:37:54 -0700
committerGitHub <noreply@github.com>2023-03-13 17:37:54 +0000
commitb280366c6e4f81d9483aed7c38c957257ac3396b (patch)
tree8af89bda155589201c81c0d0dfb0ad1a935014a9 /src/tools/fuzzing/fuzzing.cpp
parent5c408e22badb4b611155fd3a3d07000538e47341 (diff)
downloadbinaryen-b280366c6e4f81d9483aed7c38c957257ac3396b.tar.gz
binaryen-b280366c6e4f81d9483aed7c38c957257ac3396b.tar.bz2
binaryen-b280366c6e4f81d9483aed7c38c957257ac3396b.zip
Fuzzer: Limit array sizes (#5569)
Even with a 1% chance of a huge array, there is a second problem aside from hitting an allocation failure, which is DoS - building such a huge array of Literals takes noticeable time in the fuzzer. Instead, just limit array max sizes, which is consistent with what we do for struct sizes etc.
Diffstat (limited to 'src/tools/fuzzing/fuzzing.cpp')
-rw-r--r--src/tools/fuzzing/fuzzing.cpp11
1 files changed, 1 insertions, 10 deletions
diff --git a/src/tools/fuzzing/fuzzing.cpp b/src/tools/fuzzing/fuzzing.cpp
index 37f596b54..acc760f6b 100644
--- a/src/tools/fuzzing/fuzzing.cpp
+++ b/src/tools/fuzzing/fuzzing.cpp
@@ -2213,16 +2213,7 @@ Expression* TranslateToFuzzReader::makeConstCompoundRef(Type type) {
// TODO: when in a function context, we don't need to be trivial.
init = makeTrivial(element.type);
}
- Expression* count;
- if (oneIn(100)) {
- // With low probability pick a totally random count. This can easily be a
- // super-high number that immediately causes a host limit error on running
- // out of memory.
- count = makeConst(Type::i32);
- } else {
- // Otherwise, most of the time pick a reasonable/realistic number.
- count = builder.makeConst(int32_t(upTo(100)));
- }
+ auto* count = builder.makeConst(int32_t(upTo(MAX_ARRAY_SIZE)));
return builder.makeArrayNew(type.getHeapType(), count, init);
} else {
WASM_UNREACHABLE("bad user-defined ref type");