wow, it's like every time i have a chance to allow a buffer overrun, i do so

This commit is contained in:
Akash Mozumdar 2019-02-13 16:45:00 -05:00
parent a4133ce243
commit f1ab7cd208
3 changed files with 6 additions and 6 deletions

View File

@ -67,7 +67,7 @@ namespace
hp.codepage = Host::defaultCodepage; hp.codepage = Host::defaultCodepage;
} }
wcscpy_s<MAX_MODULE_SIZE>(hp.text, SCode.c_str()); wcsncpy_s(hp.text, SCode.c_str(), MAX_MODULE_SIZE - 1);
return hp; return hp;
} }
@ -153,13 +153,13 @@ namespace
if (match[2].matched) if (match[2].matched)
{ {
hp.type |= MODULE_OFFSET; hp.type |= MODULE_OFFSET;
wcscpy_s<MAX_MODULE_SIZE>(hp.module, match[2].str().erase(0, 1).c_str()); wcsncpy_s(hp.module, match[2].str().erase(0, 1).c_str(), MAX_MODULE_SIZE - 1);
} }
if (match[3].matched) if (match[3].matched)
{ {
hp.type |= FUNCTION_OFFSET; hp.type |= FUNCTION_OFFSET;
std::wstring func = match[3]; std::wstring func = match[3];
strcpy_s<MAX_MODULE_SIZE>(hp.function, std::string(func.begin(), func.end()).erase(0, 1).c_str()); strncpy_s(hp.function, std::string(func.begin(), func.end()).erase(0, 1).c_str(), MAX_MODULE_SIZE - 1);
} }
// ITH has registers offset by 4 vs AGTH: need this to correct // ITH has registers offset by 4 vs AGTH: need this to correct
@ -237,7 +237,7 @@ namespace
{ {
hp.type |= MODULE_OFFSET; hp.type |= MODULE_OFFSET;
hp.address -= (uint64_t)info.AllocationBase; hp.address -= (uint64_t)info.AllocationBase;
wcscpy_s<MAX_MODULE_SIZE>(hp.module, moduleName->c_str() + moduleName->rfind(L'\\') + 1); wcsncpy_s(hp.module, moduleName->c_str() + moduleName->rfind(L'\\') + 1, MAX_MODULE_SIZE - 1);
} }
HCode << "@" << hp.address; HCode << "@" << hp.address;

View File

@ -103,7 +103,7 @@ struct InsertHookCmd // From host
struct ConsoleOutputNotif // From hook struct ConsoleOutputNotif // From hook
{ {
ConsoleOutputNotif(std::string message = "") { strcpy_s<MESSAGE_SIZE>(this->message, message.c_str()); } ConsoleOutputNotif(std::string message = "") { strncpy_s(this->message, message.c_str(), MESSAGE_SIZE - 1); }
int command = HOST_NOTIFICATION_TEXT; int command = HOST_NOTIFICATION_TEXT;
char message[MESSAGE_SIZE] = {}; char message[MESSAGE_SIZE] = {};
}; };

View File

@ -162,7 +162,7 @@ void NewHook(HookParam hp, LPCSTR lpname, DWORD flag)
else else
{ {
if (++currentHook >= MAX_HOOK) return ConsoleOutput(TOO_MANY_HOOKS); if (++currentHook >= MAX_HOOK) return ConsoleOutput(TOO_MANY_HOOKS);
if (lpname && *lpname) strcpy_s<HOOK_NAME_SIZE>(hp.name, lpname); if (lpname && *lpname) strncpy_s(hp.name, lpname, HOOK_NAME_SIZE - 1);
ConsoleOutput(INSERTING_HOOK, hp.name); ConsoleOutput(INSERTING_HOOK, hp.name);
RemoveHook(hp.address, 0); RemoveHook(hp.address, 0);
if (!hooks[currentHook].Insert(hp, flag)) ConsoleOutput(HOOK_FAILED); if (!hooks[currentHook].Insert(hp, flag)) ConsoleOutput(HOOK_FAILED);