Skip to content

Commit 07a10a2

Browse files
fix undefined behaviour due to access out of bounds of the CapabilityEntries array
1 parent 1959962 commit 07a10a2

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVBaseInfo.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,17 @@ getSymbolicOperandMaxVersion(SPIRV::OperandCategory::OperandCategory Category,
115115
CapabilityList
116116
getSymbolicOperandCapabilities(SPIRV::OperandCategory::OperandCategory Category,
117117
uint32_t Value) {
118+
CapabilityList Capabilities;
118119
const SPIRV::CapabilityEntry *Capability =
119120
SPIRV::lookupCapabilityByCategoryAndValue(Category, Value);
120-
121-
CapabilityList Capabilities;
121+
auto TableEnd = ArrayRef(SPIRV::CapabilityEntries).end();
122122
while (Capability && Capability->Category == Category &&
123123
Capability->Value == Value) {
124124
Capabilities.push_back(
125125
static_cast<SPIRV::Capability::Capability>(Capability->ReqCapability));
126126
++Capability;
127+
if (Capability == TableEnd)
128+
break;
127129
}
128130

129131
return Capabilities;

0 commit comments

Comments
 (0)