Skip to content

Commit e44afe1

Browse files
committed
Serialization: Harden readInheritedProtocolConformance
SourceKit has been known to crash in readInheritedProtocolConformance. Let's make it more resilient. rdar://110026935
1 parent e1ca80a commit e44afe1

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

lib/Serialization/Deserialization.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,11 @@ ProtocolConformanceDeserializer::readInheritedProtocolConformance(
873873
InheritedProtocolConformanceLayout::readRecord(scratch, conformanceID,
874874
conformingTypeID);
875875

876-
Type conformingType = MF.getType(conformingTypeID);
876+
auto conformingTypeOrError =
877+
MF.getTypeChecked(conformingTypeID);
878+
if (!conformingTypeOrError)
879+
return conformingTypeOrError.takeError();
880+
Type conformingType = conformingTypeOrError.get();
877881

878882
PrettyStackTraceType trace(ctx, "reading inherited conformance for",
879883
conformingType);

0 commit comments

Comments
 (0)