skia2/resources/sksl/errors
John Stiles fabed8bb79 Fix fuzzer-discovered error with variable declarations.
As soon as a single VarDeclaration is successfully created, its Variable
is added to the current symbol table. However, if a variable-declaration
line declared several variables in a row, we would stop if ANY of the
declarations contained an error and discard the entire statement, but
would continue processing the rest of the program. This left us in a
position where some Variables existed in the SymbolTable with valid,
reachable names, but their corresponding VarDeclaration statement had
been thrown away as erroneous. Since Variables point back to
VarDeclarations for their initialValues, this gave us a stale pointer.
Any future reference to that variable name which could trigger an
access to its initialValue would read from this dead pointer.

This CL fixes the conversion of VarDeclarations so that we no longer
throw away any VarDeclarations associated with a successfully-parsed
Variable.

Change-Id: If8ec3c160933e48a0e1f36414234b3a849d8978c
Bug: oss-fuzz:32587
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/389636
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-03-29 14:35:09 +00:00
..
ArgumentCountMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArgumentModifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArrayConstructorElementCount.sksl Reject array constructors with the wrong number of elements. 2021-02-03 22:33:02 +00:00
ArrayIndexOutOfRange.sksl Add Convert/Make factory functions to IndexExpression. 2021-03-08 15:55:59 +00:00
ArrayOfVoid.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayOfVoidInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayReturnTypes.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ArraySplitDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArraySplitDimensionsInStruct.sksl Remove obsolete TODO. 2021-03-15 14:43:25 +00:00
ArrayTooManyDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTooManyDimensionsInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensions.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncBody.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInFuncDecl.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayTypeTooManyDimensionsInStruct.sksl Fix assertion when arrays are double-declared. 2021-02-12 23:49:04 +00:00
ArrayUnspecifiedDimensions.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
AssignmentTypeMismatch.sksl Clean up type coercion code and IRGenerator::checkValid(). 2021-02-17 22:39:48 +00:00
BadCaps.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadConstInitializers.sksl Align SkSL const rules more closely with GLSL 2021-02-26 17:44:11 +00:00
BadFieldAccess.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadIndex.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BadModifiers.sksl Add noinline keyword to SkSL. 2021-03-10 15:39:48 +00:00
BinaryInvalidType.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
BinaryTypeCoercion.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BinaryTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloat.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatMatrix.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BitShiftFloatVector.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BooleanArithmetic.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
BreakOutsideLoop.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CallNonFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
CanExitWithoutReturningValue.sksl Improve do-while test in CanExitWithoutReturningValue. 2021-03-17 14:50:56 +00:00
ConstructorArgumentCount.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ConstructorTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ContinueOutsideLoop.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DivideByZero.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DoTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateOutput.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
DuplicateSymbol.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
EmptyStruct.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
EnumValueMustBeConstInt.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ErrorsInDeadCode.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
FloatRemainder.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ForTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GenericArgumentMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrBadIn.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrMainParameterWrongType.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrMainTooManyParameters.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorConstruction.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorExpressions.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorLocals.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorParams.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrNoFragmentProcessorReturn.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
GrRecursion.fp Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
IfTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockScope.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockStorageModifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InterfaceBlockWithNoMembers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidAssignment.sksl Require initializers on const variable declarations 2021-02-23 20:55:01 +00:00
InvalidOutParams.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidToken.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
InvalidUnary.sksl SkSL: Ensure struct declarations contain at least one member 2021-02-12 20:57:56 +00:00
InVarWithInitializerExpression.sksl Force global initializers to be constant expressions 2021-03-15 16:54:05 +00:00
LayoutInFunctions.sksl Add permittedLayoutFlags to checkModifiers 2021-02-26 18:38:31 +00:00
LayoutMultiplePrimitiveTypes.sksl Add flags for all layout qualifiers, check for duplicates 2021-02-24 16:22:26 +00:00
LayoutRepeatedQualifiers.sksl Add early_fragment_tests layout qualifier to SkSL 2021-03-02 16:45:03 +00:00
MismatchedNumbers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ModifiersInStruct.sksl Remove "buffer" modifier from SkSL 2021-02-18 21:48:05 +00:00
OpaqueTypeAssignment.sksl Migrate VarDeclaration conversion out of IRGenerator. 2021-03-22 14:25:26 +00:00
OpaqueTypeConstruction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInArray.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInInterfaceBlock.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpaqueTypeInStruct.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OpenArray.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz26700.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27614.sksl Fix fuzzer-discovered error with ~ prefix on literals. 2021-02-26 17:30:26 +00:00
Ossfuzz27650.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz27663.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
Ossfuzz29845.sksl Fix fuzzer-discovered errors in SkSL parser. 2021-01-26 00:47:13 +00:00
Ossfuzz29849.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
Ossfuzz31410.sksl Fix fuzzer-discovered error with ~ prefix on literals. 2021-02-26 17:30:26 +00:00
Ossfuzz31469.sksl Fix fuzzer-discovered error with inlining. 2021-03-01 20:06:50 +00:00
Ossfuzz32587.sksl Fix fuzzer-discovered error with variable declarations. 2021-03-29 14:35:09 +00:00
OverflowFloatLiteral.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowIntLiteral.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowParamArraySize.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
OverflowUintLiteral.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrivateTypes.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
PrototypeInFuncBody.sksl Improve error reporting for invalid var-decls. 2021-02-12 22:26:36 +00:00
RedeclareBasicType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareEnum.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareSamplerType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStruct.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareStructTypeWithName.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareUserType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
RedeclareVariable.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnDifferentType.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnFromVoid.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnMissingValue.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
ReturnTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SelfReferentialInitializerExpression.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SpuriousFloat.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticIfTest.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
StaticSwitchConditionalBreak.sksl Fix up outdated tests. 2021-03-22 21:11:47 +00:00
StaticSwitchTest.sksl Remove constant propagation from static-switch test. 2021-02-23 15:39:05 +00:00
StaticSwitchWithConditionalBreak.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StaticSwitchWithConditionalContinue.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StaticSwitchWithConditionalReturn.sksl Fix switch optimization pass. 2021-02-23 15:38:24 +00:00
StructNameWithoutIdentifier.sksl Remove ASTNode::TypeData 2021-01-28 16:56:59 +00:00
StructTooDeeplyNested.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchDuplicateCase.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwitchDuplicateDefault.sksl Add test for duplicate default switch-case. 2021-02-19 20:31:50 +00:00
SwitchTypes.sksl Disallow initializers on uniform variables 2021-02-18 01:01:38 +00:00
SwizzleConstantOutput.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleMatrix.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOnlyLiterals.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleOutOfBounds.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
SwizzleTooManyComponents.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
TernaryMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndeclaredFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedFunction.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UndefinedSymbol.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UniformVarWithInitializerExpression.sksl Force global initializers to be constant expressions 2021-03-15 16:54:05 +00:00
UnknownDivideByZero.sksl Added detection for non-constant-folded divide by zero errors in 2021-02-06 03:13:16 +00:00
UnscopedVariableInDoWhile.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInElse.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInFor.sksl Disallow unscoped for blocks which declare a variable. 2021-03-04 17:04:40 +00:00
UnscopedVariableInIf.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnscopedVariableInWhile.sksl Fix fuzzer-discovered error with variable scoping. 2021-01-26 17:08:59 +00:00
UnsupportedGLSLIdentifiers.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
UsingInvalidValue.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00
WhileTypeMismatch.sksl Migrate SkSL test inputs to the resources/ directory. 2021-01-22 18:57:29 +00:00