File tree Expand file tree Collapse file tree
Dumper/Engine/Private/OffsetFinder Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -532,12 +532,27 @@ int32_t OffsetFinder::FindFFieldEditorOnlyMetaDataOffset()
532532 const TMap<Name08Byte, FString>* PossibleMetaDataPtr1 = *reinterpret_cast <TMap<Name08Byte, FString>**>(reinterpret_cast <uintptr_t >(GuidChild1.GetAddress ()) + Offset);
533533 const TMap<Name08Byte, FString>* PossibleMetaDataPtr2 = *reinterpret_cast <TMap<Name08Byte, FString>**>(reinterpret_cast <uintptr_t >(GuidChild2.GetAddress ()) + Offset);
534534
535- if (!PossibleMetaDataPtr1 || !PossibleMetaDataPtr2)
535+ if (!PossibleMetaDataPtr1 || !PossibleMetaDataPtr2 || Platform::IsBadReadPtr (PossibleMetaDataPtr1) || Platform::IsBadReadPtr (PossibleMetaDataPtr2) )
536536 continue ;
537537
538538 if (!PossibleMetaDataPtr1->IsValid () || !PossibleMetaDataPtr2->IsValid ())
539539 continue ;
540540
541+ if (PossibleMetaDataPtr1->Num () <= 0 || PossibleMetaDataPtr2->Num () <= 0 )
542+ continue ;
543+
544+ if (PossibleMetaDataPtr1->Num () >= 0x10 || PossibleMetaDataPtr2->Num () >= 0x10 )
545+ continue ;
546+
547+ auto GetDataPtrOfArrayInMap = [](const auto & Map) -> const void *
548+ {
549+ // TMap data is stored at offset 0x0, this is a hacky way to get the TArray::Data member of the map
550+ return *reinterpret_cast <const void * const *>(&Map);
551+ };
552+
553+ if (Platform::IsBadReadPtr (GetDataPtrOfArrayInMap (PossibleMetaDataPtr1)) || Platform::IsBadReadPtr (GetDataPtrOfArrayInMap (PossibleMetaDataPtr2)))
554+ continue ;
555+
541556 if (Off::InSDK::Name::FNameSize <= 0x8 )
542557 {
543558 if (AreValidMetadataMaps (PossibleMetaDataPtr1, PossibleMetaDataPtr2))
You can’t perform that action at this time.
0 commit comments