Skip to content

Commit 0dd2495

Browse files
committed
runtime: bail in createBoundGenericType if the number of generic parameters and arguments don't match.
This can happen if _typeByName() is called with an invalid mangled type name.
1 parent d7fd45d commit 0dd2495

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

stdlib/public/runtime/MetadataLookup.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1064,7 +1064,10 @@ class DecodedMetadataBuilder {
10641064
auto genericContext = typeDecl->getGenericContext();
10651065
{
10661066
auto genericParams = genericContext->getGenericParams();
1067-
for (unsigned i = 0, n = genericParams.size(); i != n; ++i) {
1067+
unsigned n = genericParams.size();
1068+
if (allGenericArgs.size() != n)
1069+
return BuiltType();
1070+
for (unsigned i = 0; i != n; ++i) {
10681071
const auto &param = genericParams[i];
10691072
if (param.getKind() != GenericParamKind::Type)
10701073
return BuiltType();

0 commit comments

Comments
 (0)