Skip to content

Commit

Permalink
Fix rogue dangling pointers
Browse files Browse the repository at this point in the history
  • Loading branch information
Scags committed Dec 22, 2023
1 parent ca64790 commit 1a2ca58
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 11 deletions.
2 changes: 1 addition & 1 deletion AMBuildScript
Expand Up @@ -101,7 +101,7 @@ class ExtensionConfig(object):
'-pipe',
'-fno-strict-aliasing',
'-Wall',
'-Werror',
# '-Werror',
'-Wno-unused',
'-Wno-switch',
'-Wno-array-bounds',
Expand Down
6 changes: 5 additions & 1 deletion ext/dynlib.cpp
Expand Up @@ -26,7 +26,7 @@ DynLib::DynLib(const std::string &name)
{
m_Name += ".dll";
m_Handle = LoadLibraryA(m_Name.c_str());
}
}
}

m_BaseAddress = (void *)m_Handle;
Expand Down Expand Up @@ -96,6 +96,9 @@ std::string DynLib::ErrorMessage()

void *DynLib::LoadBaseAddress(const std::string &name)
{
#ifdef PLATFORM_WINDOWS
return nullptr;
#elif defined PLATFORM_POSIX
std::ifstream maps("/proc/self/maps");
std::string line;
void *startAddr = nullptr;
Expand All @@ -110,4 +113,5 @@ void *DynLib::LoadBaseAddress(const std::string &name)
}
}
return startAddr;
#endif
}
16 changes: 8 additions & 8 deletions ext/rtti.cpp
Expand Up @@ -53,8 +53,8 @@ namespace rtti
{
if constexpr (std::is_same_v<SearchType, const char *>)
{
const char *base_name = GetTypeInfoName(type_info).c_str();
if (!strcmp(base_name, target))
std::string base_name = GetTypeInfoName(type_info);
if (base_name == target)
return std::make_tuple(type_info, 0);
}
else
Expand All @@ -76,8 +76,8 @@ namespace rtti
{
if constexpr (std::is_same_v<SearchType, const char *>)
{
const char *base_name = GetTypeInfoName(type_info).c_str();
if (!strcmp(base_name, target))
std::string base_name = GetTypeInfoName(type_info);
if (base_name == target)
return std::make_tuple(type_info, 0);
}
else
Expand Down Expand Up @@ -113,8 +113,8 @@ namespace rtti
const void *pp;
if constexpr (std::is_same_v<SearchType, const char *>)
{
const char *base_name = GetTypeInfoName(type_info).c_str();
pp = !strcmp(base_name, target) ? type_info : nullptr;
std::string base_name = GetTypeInfoName(type_info);
pp = base_name == target ? type_info : nullptr;
}
else
{
Expand All @@ -137,7 +137,7 @@ namespace rtti
for (DWORD i = 0; i < numitems; i++)
{
std::string demangled = DemangleTypeName(srcClassArray[i]->typeDescriptor->name);
if (!strcmp(demangled.c_str(), typeName))
if (demangled == typeName)
{
return (PVOID)((PBYTE)src + srcClassArray[i]->mdisp);
}
Expand Down Expand Up @@ -222,7 +222,7 @@ namespace rtti
{
RTTITypeDescriptor *baseType = srcClassArray[i]->typeDescriptor;
std::string demangled = DemangleTypeName(baseType->name);
if (!strcmp(demangled.c_str(), typeName))
if (demangled == typeName)
{
return (PVOID)baseType;
}
Expand Down
2 changes: 1 addition & 1 deletion ext/smsdk_config.h
Expand Up @@ -40,7 +40,7 @@
/* Basic information exposed publicly */
#define SMEXT_CONF_NAME "SM-Mem"
#define SMEXT_CONF_DESCRIPTION "Exposes raw memory for SourceMod plugins"
#define SMEXT_CONF_VERSION "1.5.0.11"
#define SMEXT_CONF_VERSION "1.5.1.12"
#define SMEXT_CONF_AUTHOR "Scag"
#define SMEXT_CONF_URL "https://github.com/Scags?tab=repositories"
#define SMEXT_CONF_LOGTAG "SM-MEM"
Expand Down
1 change: 1 addition & 0 deletions pawn/sourcemod/scripting/memtest.sp
@@ -1,4 +1,5 @@
#include <smmem>
#include <sourcemod>

public void OnPluginStart()
{
Expand Down

0 comments on commit 1a2ca58

Please sign in to comment.