1
0
Fork 0

DBG: added some comments on where to update the string handling to UTF-8

This commit is contained in:
Mr. eXoDia 2014-09-07 19:04:57 +02:00
parent 58194b161c
commit c79bc82292
22 changed files with 72 additions and 1 deletions

View File

@ -31,6 +31,7 @@ static char szIniFile[1024] = "";
//Bridge
BRIDGE_IMPEXP const char* BridgeInit()
{
//TODO: utf8
///Settings load
if(!GetModuleFileNameA(0, szIniFile, 1024))
return "Error getting module path!";
@ -240,6 +241,7 @@ BRIDGE_IMPEXP bool DbgGetLabelAt(duint addr, SEGMENTREG segment, char* text) //(
BRIDGE_IMPEXP bool DbgSetLabelAt(duint addr, const char* text)
{
//TODO: utf8
if(!text || strlen(text) >= MAX_LABEL_SIZE || !addr)
return false;
ADDRINFO info;
@ -266,6 +268,7 @@ BRIDGE_IMPEXP bool DbgGetCommentAt(duint addr, char* text) //comment (not live)
BRIDGE_IMPEXP bool DbgSetCommentAt(duint addr, const char* text)
{
//TODO: utf8
if(!text || strlen(text) >= MAX_COMMENT_SIZE || !addr)
return false;
ADDRINFO info;

View File

@ -82,6 +82,7 @@ extern "C" DLL_EXPORT bool _dbg_isjumpgoingtoexecute(duint addr)
extern "C" DLL_EXPORT bool _dbg_addrinfoget(duint addr, SEGMENTREG segment, ADDRINFO* addrinfo)
{
//TODO: utf8
if(!DbgIsDebugging())
return false;
bool retval = false;

View File

@ -83,6 +83,7 @@ void setalloctrace(const char* file)
bool arraycontains(const char* cmd_list, const char* cmd)
{
//TODO: utf8
//TODO: fix this function a little
if(!cmd_list or !cmd)
return false;
@ -117,6 +118,7 @@ bool scmp(const char* a, const char* b)
void formathex(char* string)
{
//TODO: utf8
int len = (int)strlen(string);
_strupr(string);
Memory<char*> new_string(len + 1, "formathex:new_string");
@ -129,6 +131,7 @@ void formathex(char* string)
void formatdec(char* string)
{
//TODO: utf8
int len = (int)strlen(string);
_strupr(string);
Memory<char*> new_string(len + 1, "formatdec:new_string");

View File

@ -87,6 +87,7 @@ bool modload(uint base, uint size, const char* fullpath)
if(!base or !size or !fullpath)
return false;
char name[deflen] = "";
//TODO: utf8
int len = (int)strlen(fullpath);
while(fullpath[len] != '\\' and len)
len--;
@ -230,6 +231,7 @@ uint modhashfromva(uint va) //return a unique hash from a VA
uint modhashfromname(const char* mod) //return MODINFO.hash
{
//TODO: utf8
if(!mod or !*mod)
return 0;
int len = (int)strlen(mod);
@ -238,6 +240,7 @@ uint modhashfromname(const char* mod) //return MODINFO.hash
uint modbasefromname(const char* modname)
{
//TODO: utf8
if(!modname or strlen(modname) >= MAX_MODULE_SIZE)
return 0;
for(ModulesInfo::iterator i = modinfo.begin(); i != modinfo.end(); ++i)
@ -281,6 +284,7 @@ uint modentryfromaddr(uint addr)
///api functions
bool apienumexports(uint base, EXPORTENUMCALLBACK cbEnum)
{
//TODO: utf8
MEMORY_BASIC_INFORMATION mbi;
VirtualQueryEx(fdProcessInfo->hProcess, (const void*)base, &mbi, sizeof(mbi));
uint size = mbi.RegionSize;
@ -353,6 +357,7 @@ bool apienumexports(uint base, EXPORTENUMCALLBACK cbEnum)
///comment functions
bool commentset(uint addr, const char* text, bool manual)
{
//TODO: utf8
if(!DbgIsDebugging() or !memisvalidreadptr(fdProcessInfo->hProcess, addr) or !text or strlen(text) >= MAX_COMMENT_SIZE - 1)
return false;
if(!*text) //NOTE: delete when there is no text
@ -440,6 +445,7 @@ void commentcachesave(JSON root)
void commentcacheload(JSON root)
{
//TODO: utf8
comments.clear();
const JSON jsoncomments = json_object_get(root, "comments");
if(jsoncomments)
@ -514,6 +520,7 @@ bool commentenum(COMMENTSINFO* commentlist, size_t* cbsize)
///label functions
bool labelset(uint addr, const char* text, bool manual)
{
//TODO: utf8
if(!DbgIsDebugging() or !memisvalidreadptr(fdProcessInfo->hProcess, addr) or !text or strlen(text) >= MAX_LABEL_SIZE - 1 or strstr(text, "&"))
return false;
if(!*text) //NOTE: delete when there is no text
@ -618,6 +625,7 @@ void labelcachesave(JSON root)
void labelcacheload(JSON root)
{
//TODO: utf8
labels.clear();
const JSON jsonlabels = json_object_get(root, "labels");
if(jsonlabels)
@ -773,6 +781,7 @@ void bookmarkcachesave(JSON root)
void bookmarkcacheload(JSON root)
{
//TODO: utf8
bookmarks.clear();
const JSON jsonbookmarks = json_object_get(root, "bookmarks");
if(jsonbookmarks)
@ -935,6 +944,7 @@ void functioncachesave(JSON root)
void functioncacheload(JSON root)
{
//TODO: utf8
functions.clear();
const JSON jsonfunctions = json_object_get(root, "functions");
if(jsonfunctions)
@ -1115,6 +1125,7 @@ void loopcachesave(JSON root)
void loopcacheload(JSON root)
{
//TODO: utf8
loops.clear();
const JSON jsonloops = json_object_get(root, "loops");
if(jsonloops)

View File

@ -25,6 +25,7 @@ formatarg:
*/
void argformat(char* cmd)
{
//TODO: utf8
if(strlen(cmd) >= deflen)
return;
@ -160,6 +161,7 @@ void argformat(char* cmd)
*/
int arggetcount(const char* cmd)
{
//TODO: utf8
int len = (int)strlen(cmd);
if(!len or len >= deflen)
return -1;
@ -198,6 +200,7 @@ int arggetcount(const char* cmd)
*/
bool argget(const char* cmd, char* arg, int arg_num, bool optional)
{
//TODO: utf8
if(strlen(cmd) >= deflen)
return false;
int argcount = arggetcount(cmd);

View File

@ -19,6 +19,7 @@ static bool cbUnknown(const char* text, ULONGLONG* value)
bool assemble(uint addr, unsigned char* dest, int* size, const char* instruction, char* error)
{
//TODO: utf8
if(strlen(instruction) >= XEDPARSE_MAXBUFSIZE)
return false;
XEDPARSE parse;

View File

@ -226,6 +226,7 @@ void bpcachesave(JSON root)
void bpcacheload(JSON root)
{
//TODO: utf8
breakpoints.clear();
const JSON jsonbreakpoints = json_object_get(root, "breakpoints");
if(jsonbreakpoints)

View File

@ -46,6 +46,7 @@ void cmdfree(COMMAND* cmd_list)
bool cmdnew(COMMAND* command_list, const char* name, CBCOMMAND cbCommand, bool debugonly)
{
//TODO: utf8
if(!command_list or !cbCommand or !name or !*name or cmdfind(command_list, name, 0))
return false;
COMMAND* cmd;
@ -74,6 +75,7 @@ bool cmdnew(COMMAND* command_list, const char* name, CBCOMMAND cbCommand, bool d
COMMAND* cmdget(COMMAND* command_list, const char* cmd)
{
//TODO: utf8
char new_cmd[deflen] = "";
strcpy_s(new_cmd, cmd);
int len = (int)strlen(new_cmd);
@ -136,6 +138,7 @@ error_is_fatal: error return of a command callback stops the command proce
*/
CMDRESULT cmdloop(COMMAND* command_list, CBCOMMAND cbUnknownCommand, CBCOMMANDPROVIDER cbCommandProvider, CBCOMMANDFINDER cbCommandFinder, bool error_is_fatal)
{
//TODO: utf8
if(!cbUnknownCommand or !cbCommandProvider)
return STATUS_ERROR;
char command[deflen] = "";
@ -205,6 +208,7 @@ static bool isvalidexpression(const char* expression)
static void specialformat(char* string)
{
//TODO: utf8
int len = (int)strlen(string);
char* found = strstr(string, "=");
char* str = (char*)emalloc(len * 2, "specialformat:str");
@ -281,6 +285,7 @@ COMMAND* cmdfindmain(COMMAND* cmd_list, char* command)
CMDRESULT cmddirectexec(COMMAND* cmd_list, const char* cmd)
{
//TODO: utf8
if(!cmd or !strlen(cmd))
return STATUS_ERROR;
char command[deflen] = "";

View File

@ -457,6 +457,7 @@ void cbLibrarianBreakpoint(void* lpData)
static BOOL CALLBACK SymRegisterCallbackProc64(HANDLE hProcess, ULONG ActionCode, ULONG64 CallbackData, ULONG64 UserContext)
{
//TODO: utf8
UNREFERENCED_PARAMETER(hProcess);
UNREFERENCED_PARAMETER(UserContext);
PIMAGEHLP_CBA_EVENT evt;
@ -646,6 +647,7 @@ void cbRtrStep()
///custom handlers
static void cbCreateProcess(CREATE_PROCESS_DEBUG_INFO* CreateProcessInfo)
{
//TODO: utf8
void* base = CreateProcessInfo->lpBaseOfImage;
char DebugFileName[deflen] = "";
if(!GetFileNameFromHandle(CreateProcessInfo->hFile, DebugFileName))
@ -949,6 +951,7 @@ static void cbUnloadDll(UNLOAD_DLL_DEBUG_INFO* UnloadDll)
static void cbOutputDebugString(OUTPUT_DEBUG_STRING_INFO* DebugString)
{
//TODO: utf8
hActiveThread = threadgethandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
PLUG_CB_OUTPUTDEBUGSTRING callbackInfo;
callbackInfo.DebugString = DebugString;
@ -1019,6 +1022,7 @@ static void cbOutputDebugString(OUTPUT_DEBUG_STRING_INFO* DebugString)
static void cbException(EXCEPTION_DEBUG_INFO* ExceptionData)
{
//TODO: utf8
hActiveThread = threadgethandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
PLUG_CB_EXCEPTION callbackInfo;
callbackInfo.Exception = ExceptionData;
@ -1163,6 +1167,7 @@ static void cbDebugEvent(DEBUG_EVENT* DebugEvent)
DWORD WINAPI threadDebugLoop(void* lpParameter)
{
//TODO: utf8
lock(WAITID_STOP); //we are running
//initialize
bIsAttached = false;
@ -1404,6 +1409,7 @@ static void cbAttachDebugger()
DWORD WINAPI threadAttachLoop(void* lpParameter)
{
//TODO: utf8
lock(WAITID_STOP);
bIsAttached = true;
bSkipExceptions = false;
@ -1638,6 +1644,7 @@ void dbggetpageligned(uint* addr)
bool dbgpagerightsfromstring(DWORD* protect, char* rights_string)
{
//TODO: utf8
if(strlen(rights_string) < 2)
return false;
@ -1782,6 +1789,7 @@ bool dbggetdefjit(char* jit_entry)
bool dbgsetjit(char* jit_cmd, arch arch_in, arch* arch_out, readwritejitkey_error_t* rw_error_out)
{
//TODO: utf8
DWORD jit_cmd_size = (DWORD)strlen(jit_cmd);
readwritejitkey_error_t rw_error;
if(_readwritejitkey(jit_cmd, & jit_cmd_size, "Debugger", arch_in, arch_out, & rw_error, true) == false)

View File

@ -15,6 +15,7 @@ static bool bScyllaLoaded = false;
CMDRESULT cbDebugInit(int argc, char* argv[])
{
//TODO: utf8
if(DbgIsDebugging())
DbgCmdExecDirect("stop");

View File

@ -334,6 +334,7 @@ bool disasmispossiblestring(uint addr)
bool disasmgetstringat(uint addr, STRING_TYPE* type, char* ascii, char* unicode, int maxlen)
{
//TODO: utf8
if(type)
*type = str_none;
if(!disasmispossiblestring(addr))

View File

@ -934,6 +934,7 @@ CMDRESULT cbInstrGetstr(int argc, char* argv[])
CMDRESULT cbInstrCopystr(int argc, char* argv[])
{
//TODO: utf8
if(argc < 3)
{
dputs("not enough arguments!");
@ -982,6 +983,7 @@ CMDRESULT cbInstrCopystr(int argc, char* argv[])
CMDRESULT cbInstrFind(int argc, char* argv[])
{
//TODO: utf8
if(argc < 3)
{
dputs("not enough arguments!");
@ -1033,6 +1035,7 @@ CMDRESULT cbInstrFind(int argc, char* argv[])
CMDRESULT cbInstrFindAll(int argc, char* argv[])
{
//TODO: utf8
if(argc < 3)
{
dputs("not enough arguments!");

View File

@ -55,6 +55,7 @@ mathformat:
*/
void mathformat(char* text)
{
//TODO: utf8
int len = (int)strlen(text);
Memory<char*> temp(len + 1, "mathformat:temp");
memset(temp, 0, len + 1);
@ -69,6 +70,7 @@ void mathformat(char* text)
*/
bool mathcontains(const char* text)
{
//TODO: utf8
if(*text == '-') //ignore negative values
text++;
int len = (int)strlen(text);
@ -236,6 +238,7 @@ static void fillpair(EXPRESSION* expstruct, int pos, int layer)
static int matchpairs(EXPRESSION* expstruct, char* expression, int endlayer)
{
//TODO: utf8
int layer = endlayer;
int len = (int)strlen(expression);
for(int i = 0; i < len; i++)
@ -264,6 +267,7 @@ static int matchpairs(EXPRESSION* expstruct, char* expression, int endlayer)
static int expressionformat(char* exp)
{
//TODO: utf8
int len = (int)strlen(exp);
int open = 0;
int close = 0;
@ -359,6 +363,7 @@ bool mathfromstring(const char* string, uint* value, bool silent, bool baseonly,
{
int highestop = 0;
int highestop_pos = 0;
//TODO: utf8
int len = (int)strlen(string);
bool negative = false;
if(*string == '-')
@ -392,6 +397,7 @@ bool mathfromstring(const char* string, uint* value, bool silent, bool baseonly,
if(string[highestop_pos] == '~')
{
right = ~right;
//TODO: utf8
if(!strlen(strleft))
{
*value = right;

View File

@ -228,6 +228,7 @@ void memfree(HANDLE hProcess, uint addr)
static int formathexpattern(char* string)
{
//TODO: utf8
int len = (int)strlen(string);
_strupr(string);
Memory<char*> new_string(len + 1, "formathexpattern:new_string");
@ -241,6 +242,7 @@ static int formathexpattern(char* string)
static bool patterntransform(const char* text, std::vector<PATTERNBYTE>* pattern)
{
//TODO: utf8
if(!text or !pattern)
return false;
pattern->clear();

View File

@ -260,6 +260,7 @@ void plugincbcall(CBTYPE cbType, void* callbackInfo)
bool plugincmdregister(int pluginHandle, const char* command, CBPLUGINCOMMAND cbCommand, bool debugonly)
{
//TODO: utf8
if(!command or strlen(command) >= deflen or strstr(command, "\1"))
return false;
PLUG_COMMAND plugCmd;
@ -274,6 +275,7 @@ bool plugincmdregister(int pluginHandle, const char* command, CBPLUGINCOMMAND cb
bool plugincmdunregister(int pluginHandle, const char* command)
{
//TODO: utf8
if(!command or strlen(command) >= deflen or strstr(command, "\1"))
return false;
int listsize = (int)pluginCommandList.size();
@ -293,6 +295,7 @@ bool plugincmdunregister(int pluginHandle, const char* command)
int pluginmenuadd(int hMenu, const char* title)
{
//TODO: utf8
if(!title or !strlen(title))
return -1;
int nFound = -1;
@ -317,6 +320,7 @@ int pluginmenuadd(int hMenu, const char* title)
bool pluginmenuaddentry(int hMenu, int hEntry, const char* title)
{
//TODO: utf8
if(!title or !strlen(title) or hEntry == -1)
return false;
int pluginHandle = -1;

View File

@ -62,6 +62,7 @@ static int scriptinternalstep(int fromIp) //internal step routine
static bool scriptcreatelinemap(const char* filename)
{
//TODO: utf8
HANDLE hFile = CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if(hFile == INVALID_HANDLE_VALUE)
{
@ -205,6 +206,7 @@ static bool scriptcreatelinemap(const char* filename)
char newraw[MAX_SCRIPT_LINE_SIZE] = "";
strcpy(newraw, cur.raw);
argformat(newraw);
//TODO: utf8
int len = (int)strlen(newraw);
for(int i = 0; i < len; i++)
if(newraw[i] == ' ')
@ -312,6 +314,7 @@ static bool scriptisruncommand(const char* cmdlist)
static bool scriptisinternalcommand(const char* text, const char* cmd)
{
//TODO: utf8
int len = (int)strlen(text);
int cmdlen = (int)strlen(cmd);
if(cmdlen > len)

View File

@ -11,6 +11,7 @@ struct SYMBOLCBDATA
static BOOL CALLBACK EnumSymbols(PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext)
{
//TODO: utf8
int len = (int)strlen(pSymInfo->Name);
SYMBOLINFO curSymbol;
memset(&curSymbol, 0, sizeof(SYMBOLINFO));
@ -126,6 +127,7 @@ void symdownloadallsymbols(const char* szSymbolStore)
bool symfromname(const char* name, uint* addr)
{
//TODO: utf8
if(!name or !strlen(name) or !addr or !_strnicmp(name, "ordinal", 7)) //skip 'OrdinalXXX'
return false;
char buffer[sizeof(SYMBOL_INFO) + MAX_LABEL_SIZE * sizeof(char)];

View File

@ -8,7 +8,6 @@ enum WAIT_ID
{
WAITID_RUN,
WAITID_STOP,
WAITID_USERDB,
WAITID_LAST
};

View File

@ -988,6 +988,7 @@ bool valapifromstring(const char* name, uint* value, int* value_size, bool print
strcpy(modname, name);
modname[apiname - name] = 0;
apiname++;
//TODO: utf8
if(!strlen(apiname))
return false;
uint modbase = modbasefromname(modname);
@ -1000,6 +1001,7 @@ bool valapifromstring(const char* name, uint* value, int* value_size, bool print
else
{
char szBaseName[256] = "";
//TODO: utf8
int len = (int)strlen(szModName);
while(szModName[len] != '\\')
len--;
@ -1125,6 +1127,7 @@ static bool isdecnumber(const char* string)
return false;
decAdd++;
}
//TODO: utf8
int len = (int)strlen(string + decAdd);
for(int i = 0; i < len; i++)
if(!isdigit(string[i + decAdd]))
@ -1144,6 +1147,7 @@ static bool ishexnumber(const char* string)
add = 1;
if(!string[add]) //only an indicator, no number
return false;
//TODO: utf8
int len = (int)strlen(string + add);
for(int i = 0; i < len; i++)
if(!isxdigit(string[i + add])) //all must be hex digits
@ -1162,6 +1166,7 @@ bool valfromstring(const char* string, uint* value, bool silent, bool baseonly,
}
else if(mathcontains(string)) //handle math
{
//TODO: utf8
int len = (int)strlen(string);
Memory<char*> newstring(len * 2, "valfromstring:newstring");
if(strstr(string, "[")) //memory brackets: []
@ -1216,6 +1221,7 @@ bool valfromstring(const char* string, uint* value, bool silent, bool baseonly,
*isvar = true;
return true;
}
//TODO: utf8
int len = (int)strlen(string);
Memory<char*> newstring(len * 2, "valfromstring:newstring");
if(strstr(string, "["))
@ -1372,6 +1378,7 @@ bool valtostring(const char* string, uint* value, bool silent)
dputs("not debugging");
return false;
}
//TODO: utf8
int len = (int)strlen(string);
Memory<char*> newstring(len * 2, "valfromstring:newstring");
if(strstr(string, "[")) //memory brackets: []
@ -1426,6 +1433,7 @@ bool valtostring(const char* string, uint* value, bool silent)
return false;
}
bool ok = setregister(string, *value);
//TODO: utf8
Memory<char*> regName(strlen(string) + 1, "valtostring:regname");
strcpy(regName, string);
_strlwr(regName);

View File

@ -185,6 +185,7 @@ bool varset(const char* name, uint value, bool setreadonly)
bool varset(const char* name, const char* string, bool setreadonly)
{
VAR_VALUE varvalue;
//TODO: utf8
int size = (int)strlen(string);
varvalue.size = size;
varvalue.type = VAR_STRING;

View File

@ -54,6 +54,7 @@ static CMDRESULT cbStrLen(int argc, char* argv[])
dputs("not enough arguments!");
return STATUS_ERROR;
}
//TODO: utf8
dprintf("\"%s\"[%d]\n", argv[1], strlen(argv[1]));
return STATUS_CONTINUE;
}
@ -215,6 +216,7 @@ static bool cbCommandProvider(char* cmd, int maxlen)
MESSAGE msg;
msgwait(gMsgStack, &msg);
char* newcmd = (char*)msg.param1;
//TODO: utf8
if(strlen(newcmd) >= deflen)
{
dprintf("command cut at ~%d characters\n", deflen);
@ -227,6 +229,7 @@ static bool cbCommandProvider(char* cmd, int maxlen)
extern "C" DLL_EXPORT bool _dbg_dbgcmdexec(const char* cmd)
{
//TODO: utf8
int len = (int)strlen(cmd);
char* newcmd = (char*)emalloc((len + 1) * sizeof(char), "_dbg_dbgcmdexec:newcmd");
strcpy(newcmd, cmd);
@ -257,6 +260,7 @@ extern "C" DLL_EXPORT const char* _dbg_dbginit()
char dir[deflen] = "";
if(!GetModuleFileNameA(hInst, dir, deflen))
return "GetModuleFileNameA failed!";
//TODO: utf8
int len = (int)strlen(dir);
while(dir[len] != '\\')
len--;

View File

@ -107,6 +107,7 @@ void RegisterShellExtension(const char* key, const char* command)
RegCloseKey(hKey);
}
//TODO: utf8
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
CoInitialize(NULL); //fixed some crash