Skip to content

Commit fb1b0fa

Browse files
committed
[Reflection] Range-check shapeIndex in createBoundGenericTypeReconstructingParent.
If the parentNode chain ends up being longer than genericParamsPerLevel, we can underflow shapeIndex, resulting in an out-of-bounds read. Range check it against the vector before trying to read it, and return NULL if it's out of bounds. rdar://103220412
1 parent 7c6fea6 commit fb1b0fa

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

include/swift/Reflection/TypeRefBuilder.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,9 @@ class TypeRefBuilder {
569569
if (!mangling.isSuccess())
570570
return nullptr;
571571

572+
if (shapeIndex >= genericParamsPerLevel.size())
573+
return nullptr;
574+
572575
auto numGenericArgs = genericParamsPerLevel[shapeIndex];
573576

574577
auto startOffsetFromEnd = argsIndex + numGenericArgs;

0 commit comments

Comments
 (0)