The expression limit validation check needs to be in front of other tree traversal to prevent stack overflows. Also, call depths of sufficient size (80k+) could overflow the depth check itself, necessitating an upper bound on initial tree traversal. This fixes crashes in the WebGL long-expressions bug test. BUG=angle:584 Change-Id: Ib48294bf77a5923d230f237fbd63a36a5662e317 Reviewed-on: https://chromium-review.googlesource.com/191931Reviewed-by:Zhenyao Mo <zmo@chromium.org> Reviewed-by:
Nicolas Capens <nicolascapens@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| depgraph | Loading commit data... | |
| timing | Loading commit data... | |
| 64bit-lexer-safety.patch | Loading commit data... | |
| BaseTypes.h | Loading commit data... | |
| BlockLayoutEncoder.cpp | Loading commit data... | |
| BlockLayoutEncoder.h | Loading commit data... | |
| BuiltInFunctionEmulator.cpp | Loading commit data... | |
| BuiltInFunctionEmulator.h | Loading commit data... | |
| CodeGen.cpp | Loading commit data... | |
| Common.h | Loading commit data... | |
| Compiler.cpp | Loading commit data... | |
| ConstantUnion.h | Loading commit data... | |
| DetectCallDepth.cpp | Loading commit data... | |
| DetectCallDepth.h | Loading commit data... | |
| DetectDiscontinuity.cpp | Loading commit data... | |
| DetectDiscontinuity.h | Loading commit data... | |
| Diagnostics.cpp | Loading commit data... | |
| Diagnostics.h | Loading commit data... | |
| DirectiveHandler.cpp | Loading commit data... | |
| DirectiveHandler.h | Loading commit data... | |
| ExtensionBehavior.h | Loading commit data... | |
| FlagStd140Structs.cpp | Loading commit data... | |
| FlagStd140Structs.h | Loading commit data... | |
| ForLoopUnroll.cpp | Loading commit data... | |
| ForLoopUnroll.h | Loading commit data... | |
| HLSLLayoutEncoder.cpp | Loading commit data... | |
| HLSLLayoutEncoder.h | Loading commit data... | |
| HashNames.h | Loading commit data... | |
| InfoSink.cpp | Loading commit data... | |
| InfoSink.h | Loading commit data... | |
| Initialize.cpp | Loading commit data... | |
| Initialize.h | Loading commit data... | |
| InitializeDll.cpp | Loading commit data... | |
| InitializeDll.h | Loading commit data... | |
| InitializeGlobals.h | Loading commit data... | |
| InitializeParseContext.cpp | Loading commit data... | |
| InitializeParseContext.h | Loading commit data... | |
| InitializeVariables.cpp | Loading commit data... | |
| InitializeVariables.h | Loading commit data... | |
| IntermTraverse.cpp | Loading commit data... | |
| Intermediate.cpp | Loading commit data... | |
| LoopInfo.cpp | Loading commit data... | |
| LoopInfo.h | Loading commit data... | |
| MMap.h | Loading commit data... | |
| NodeSearch.h | Loading commit data... | |
| OutputESSL.cpp | Loading commit data... | |
| OutputESSL.h | Loading commit data... | |
| OutputGLSL.cpp | Loading commit data... | |
| OutputGLSL.h | Loading commit data... | |
| OutputGLSLBase.cpp | Loading commit data... | |
| OutputGLSLBase.h | Loading commit data... | |
| OutputHLSL.cpp | Loading commit data... | |
| OutputHLSL.h | Loading commit data... | |
| ParseContext.cpp | Loading commit data... | |
| ParseContext.h | Loading commit data... | |
| PoolAlloc.cpp | Loading commit data... | |
| PoolAlloc.h | Loading commit data... | |
| Pragma.h | Loading commit data... | |
| QualifierAlive.cpp | Loading commit data... | |
| QualifierAlive.h | Loading commit data... | |
| RemoveTree.cpp | Loading commit data... | |
| RemoveTree.h | Loading commit data... | |
| RenameFunction.h | Loading commit data... | |
| RewriteElseBlocks.cpp | Loading commit data... | |
| RewriteElseBlocks.h | Loading commit data... | |
| SearchSymbol.cpp | Loading commit data... | |
| SearchSymbol.h | Loading commit data... | |
| ShHandle.h | Loading commit data... | |
| ShaderLang.cpp | Loading commit data... | |
| ShaderVariable.cpp | Loading commit data... | |
| ShaderVariable.h | Loading commit data... | |
| SymbolTable.cpp | Loading commit data... | |
| SymbolTable.h | Loading commit data... | |
| TranslatorESSL.cpp | Loading commit data... | |
| TranslatorESSL.h | Loading commit data... | |
| TranslatorGLSL.cpp | Loading commit data... | |
| TranslatorGLSL.h | Loading commit data... | |
| TranslatorHLSL.cpp | Loading commit data... | |
| TranslatorHLSL.h | Loading commit data... | |
| Types.h | Loading commit data... | |
| UnfoldShortCircuit.cpp | Loading commit data... | |
| UnfoldShortCircuit.h | Loading commit data... | |
| UnfoldShortCircuitAST.cpp | Loading commit data... | |
| UnfoldShortCircuitAST.h | Loading commit data... | |
| ValidateLimitations.cpp | Loading commit data... | |
| ValidateLimitations.h | Loading commit data... | |
| ValidateOutputs.cpp | Loading commit data... | |
| ValidateOutputs.h | Loading commit data... | |
| VariableInfo.cpp | Loading commit data... | |
| VariableInfo.h | Loading commit data... | |
| VariablePacker.cpp | Loading commit data... | |
| VariablePacker.h | Loading commit data... | |
| VersionGLSL.cpp | Loading commit data... | |
| VersionGLSL.h | Loading commit data... | |
| compilerdebug.cpp | Loading commit data... | |
| compilerdebug.h | Loading commit data... | |
| generate_parser.sh | Loading commit data... | |
| glslang.h | Loading commit data... | |
| glslang.l | Loading commit data... | |
| glslang.y | Loading commit data... | |
| glslang_lex.cpp | Loading commit data... | |
| glslang_tab.cpp | Loading commit data... | |
| glslang_tab.h | Loading commit data... | |
| intermOut.cpp | Loading commit data... | |
| intermediate.h | Loading commit data... | |
| length_limits.h | Loading commit data... | |
| localintermediate.h | Loading commit data... | |
| osinclude.h | Loading commit data... | |
| ossource_posix.cpp | Loading commit data... | |
| ossource_win.cpp | Loading commit data... | |
| parseConst.cpp | Loading commit data... | |
| util.cpp | Loading commit data... | |
| util.h | Loading commit data... |