Skip to content

Commit

Permalink
Add length checks to ExtensionCollection
Browse files Browse the repository at this point in the history
  • Loading branch information
ObsidianMinor committed Oct 12, 2019
1 parent 6d4e7fd commit 461f94b
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,32 @@ internal ExtensionCollection(FileDescriptor file, Extension[] extensions)
{
UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly(
file.Proto.Extension,
(extension, i) => new FieldDescriptor(extension, file, null, i, null, extensions?[i]));
(extension, i) => {
if (extensions?.Length != 0)
{
return new FieldDescriptor(extension, file, null, i, null, extensions?[i]);
}
else
{
return new FieldDescriptor(extension, file, null, i, null, null); // return null if there's no extensions in this array for old code-gen
}
});
}

internal ExtensionCollection(MessageDescriptor message, Extension[] extensions)
{
UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly(
message.Proto.Extension,
(extension, i) => new FieldDescriptor(extension, message.File, message, i, null, extensions?[i]));
(extension, i) => {
if (extensions?.Length != 0)
{
return new FieldDescriptor(extension, message.File, message, i, null, extensions?[i]);
}
else
{
return new FieldDescriptor(extension, message.File, message, i, null, null);
}
});
}

/// <summary>
Expand Down

0 comments on commit 461f94b

Please sign in to comment.