jbevain / cecil

Cecil is a library to inspect, modify and create .NET programs and libraries.
MIT License
2.71k stars 619 forks source link

Fix privatescope method resolution bug #916

Closed mrvoorhe closed 1 year ago

mrvoorhe commented 1 year ago

When resolving a GenericInstanceMethod for a privatescope method that has the same signature as other methods, MetadataResolver.GetMethod would incorrectly return the first method with the same name.

The fix for this seems to be an optimization opportunity as well. Although I have to admit it feels a little too easy. Please make sure I'm not overlooking some reason why this fix is not safe.

I added 2 variations of tests.

PrivateScope - These tests were fine and passed as is. This is because the instruction operands are MethodDefinitions and therefore didn't need to be resolved by MetadataResolver

PrivateScopeGeneric - This test triggered the bug.

jbevain commented 1 year ago

We keep learning interesting things. Thank you for the PR!