Skip to content

Commit 1979bee

Browse files
jkoritzinskygithub-actions
authored andcommitted
Be defensive against a null source handle
1 parent 49244d9 commit 1979bee

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.NativeAot.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,15 @@ private static unsafe int IFindReferenceTargetsCallback_FoundTrackerTarget(IntPt
230230
return HResults.E_INVALIDARG;
231231
}
232232

233-
if (!TryGetObject(referenceTrackerTarget, out object? targetObject))
233+
if (s_currentRootObjectHandle.Target is not object sourceObject)
234234
{
235235
return HResults.S_FALSE;
236236
}
237237

238-
object sourceObject = s_currentRootObjectHandle.Target!;
238+
if (!TryGetObject(referenceTrackerTarget, out object? targetObject))
239+
{
240+
return HResults.S_FALSE;
241+
}
239242

240243
if (sourceObject == targetObject)
241244
{

src/coreclr/vm/interoplibinterface_comwrappers.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,11 @@ namespace InteropLibImports
456456
::OBJECTHANDLE srcHandle = static_cast<::OBJECTHANDLE>(sourceHandle);
457457
OBJECTREF source = ObjectFromHandle(srcHandle);
458458

459+
if (source == NULL)
460+
{
461+
return S_FALSE;
462+
}
463+
459464
// Get the target of the external object's reference.
460465
::OBJECTHANDLE tgtHandle = static_cast<::OBJECTHANDLE>(targetHandle);
461466
MOWHOLDERREF holder = (MOWHOLDERREF)ObjectFromHandle(tgtHandle);

0 commit comments

Comments
 (0)