61e5e202a5
The fuzzer is currently learning to make unboundedly-large programs by nesting medium-size loops repeatedly. SkVM doesn't have a mechanism to limit the ensuing explosion of code and ends up making unreasonably deep stacks and/or unreasonably large programs. SkSL now enforces an upper bound of approximately 100,000 IR nodes on a fully-flattened, fully-inlined strict-ES2 program. The limit is picked out of thin air, but this should be enough to prevent SkVM from going haywire while still being large enough to handle any reasonable program. We can definitely tune this value if we find that it is too large (admitting dangerous code) or too small (rejecting good code). Change-Id: I11735636175721fbc79460b4e194d8e4b42dc47d Bug: skia:12396, oss-fuzz:37827, oss-fuzz:37837 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/444358 Auto-Submit: John Stiles <johnstiles@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
13 lines
236 B
Plaintext
13 lines
236 B
Plaintext
half4 main(float2 xy) {
|
|
int i;
|
|
|
|
for (int a=0; a<10; ++a) { // 10
|
|
for (int b=0; b<10; ++b) { // 100
|
|
for (int c=0; c<10; ++c) { // 1000
|
|
for (int d=0; d<10; ++d) { // 10000
|
|
++i;
|
|
}}}}
|
|
|
|
return half4(0);
|
|
}
|