Skip to content

Commit 7801882

Browse files
committed
Don't use uninitialized stack values when parsing invalid swizzles.
1 parent 064a368 commit 7801882

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

glslang/MachineIndependent/ParseContextBase.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,7 @@ void TParseContextBase::parseSwizzleSelector(const TSourceLoc& loc, const TStrin
537537
exyzw,
538538
ergba,
539539
estpq,
540+
ebadswizzle,
540541
} fieldSet[MaxSwizzleSelectors];
541542

542543
// Decode the swizzle string.
@@ -596,13 +597,19 @@ void TParseContextBase::parseSwizzleSelector(const TSourceLoc& loc, const TStrin
596597
break;
597598

598599
default:
599-
error(loc, "unknown swizzle selection", compString.c_str(), "");
600+
fieldSet[i] = ebadswizzle;
600601
break;
601602
}
602603
}
603604

604605
// Additional error checking.
605606
for (int i = 0; i < selector.size(); ++i) {
607+
if (fieldSet[i] == ebadswizzle) {
608+
error(loc, "unknown swizzle selection", compString.c_str(), "");
609+
selector.resize(i);
610+
break;
611+
}
612+
606613
if (selector[i] >= vecSize) {
607614
error(loc, "vector swizzle selection out of range", compString.c_str(), "");
608615
selector.resize(i);

0 commit comments

Comments
 (0)