From 047e45b44e4c3dc6490b89eb80e86da6239bb06b Mon Sep 17 00:00:00 2001 From: "Mr. eXoDia" Date: Sat, 11 Jul 2015 05:18:06 +0200 Subject: [PATCH] DBG+GUI: fixed various bugs found by coverity --- x64_dbg_dbg/_scriptapi_register.cpp | 3 +-- x64_dbg_dbg/functionanalysis.cpp | 6 ++++-- x64_dbg_dbg/instruction.cpp | 2 +- x64_dbg_gui/Project/Src/BasicView/StdTable.cpp | 1 + x64_dbg_gui/Project/Src/Gui/CPUDump.cpp | 3 ++- x64_dbg_gui/Project/Src/Gui/PatchDialog.cpp | 6 ++++-- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/x64_dbg_dbg/_scriptapi_register.cpp b/x64_dbg_dbg/_scriptapi_register.cpp index a005619b..0c620ea8 100644 --- a/x64_dbg_dbg/_scriptapi_register.cpp +++ b/x64_dbg_dbg/_scriptapi_register.cpp @@ -96,8 +96,7 @@ static const char* regTable[] = SCRIPT_EXPORT duint Script::Register::Get(Script::Register::RegisterEnum reg) { duint value; - valfromstring(regTable[reg], &value); - return value; + return valfromstring(regTable[reg], &value) ? value : 0; } SCRIPT_EXPORT bool Script::Register::Set(Script::Register::RegisterEnum reg, duint value) diff --git a/x64_dbg_dbg/functionanalysis.cpp b/x64_dbg_dbg/functionanalysis.cpp index d3c0ec1b..2631ef07 100644 --- a/x64_dbg_dbg/functionanalysis.cpp +++ b/x64_dbg_dbg/functionanalysis.cpp @@ -71,8 +71,10 @@ void FunctionAnalysis::AnalyseFunctions() uint end = FindFunctionEnd(function.start, maxaddr); if(end) { - _cp.Disassemble(end, TranslateAddress(end), MAX_DISASM_BUFFER); - function.end = end + _cp.Size() - 1; + if(_cp.Disassemble(end, TranslateAddress(end), MAX_DISASM_BUFFER)) + function.end = end + _cp.Size() - 1; + else + function.end = end; } } } diff --git a/x64_dbg_dbg/instruction.cpp b/x64_dbg_dbg/instruction.cpp index 720565a6..1f9dfe10 100644 --- a/x64_dbg_dbg/instruction.cpp +++ b/x64_dbg_dbg/instruction.cpp @@ -1511,7 +1511,7 @@ static bool cbFindAsm(Capstone* disasm, BASIC_INSTRUCTION_INFO* basicinfo, REFIN if(found) { char addrText[20] = ""; - sprintf(addrText, "%p", disasm->Address()); + sprintf(addrText, fhex, disasm->Address()); GuiReferenceSetRowCount(refinfo->refcount + 1); GuiReferenceSetCellContent(refinfo->refcount, 0, addrText); char disassembly[GUI_MAX_DISASSEMBLY_SIZE] = ""; diff --git a/x64_dbg_gui/Project/Src/BasicView/StdTable.cpp b/x64_dbg_gui/Project/Src/BasicView/StdTable.cpp index 3e33943c..06a22628 100644 --- a/x64_dbg_gui/Project/Src/BasicView/StdTable.cpp +++ b/x64_dbg_gui/Project/Src/BasicView/StdTable.cpp @@ -8,6 +8,7 @@ StdTable::StdTable(QWidget* parent) : AbstractTableView(parent) mSelection = data; mIsMultiSelctionAllowed = false; + mIsColumnSortingAllowed = true; mData.clear(); mSort.first = -1; diff --git a/x64_dbg_gui/Project/Src/Gui/CPUDump.cpp b/x64_dbg_gui/Project/Src/Gui/CPUDump.cpp index 56b2ed51..6430be97 100644 --- a/x64_dbg_gui/Project/Src/Gui/CPUDump.cpp +++ b/x64_dbg_gui/Project/Src/Gui/CPUDump.cpp @@ -483,7 +483,8 @@ QString CPUDump::paintContent(QPainter* painter, int_t rowBase, int rowOffset, i int_t wRva = (rowBase + rowOffset) * getBytePerRowCount() - mByteOffset; mMemPage->read((byte_t*)&data, wRva, sizeof(uint_t)); char modname[MAX_MODULE_SIZE] = ""; - DbgGetModuleAt(data, modname); + if(!DbgGetModuleAt(data, modname)) + modname[0] = '\0'; char label_text[MAX_LABEL_SIZE] = ""; if(DbgGetLabelAt(data, SEG_DEFAULT, label_text)) wStr = QString(modname) + "." + QString(label_text); diff --git a/x64_dbg_gui/Project/Src/Gui/PatchDialog.cpp b/x64_dbg_gui/Project/Src/Gui/PatchDialog.cpp index 8dcd27fb..80d1dd2a 100644 --- a/x64_dbg_gui/Project/Src/Gui/PatchDialog.cpp +++ b/x64_dbg_gui/Project/Src/Gui/PatchDialog.cpp @@ -559,9 +559,11 @@ void PatchDialog::on_btnImport_clicked() unsigned char checkbyte = 0; DbgMemRead(curPatch.addr, &checkbyte, sizeof(checkbyte)); IMPORTSTATUS status; - if(status.alreadypatched = checkbyte == newbyte) + status.alreadypatched = (checkbyte == newbyte); + status.badoriginal = (checkbyte != oldbyte); + if(status.alreadypatched) bAlreadyDone = true; - else if(status.badoriginal = checkbyte != oldbyte) + else if(status.badoriginal) bBadOriginal = true; curPatch.oldbyte = oldbyte; curPatch.newbyte = newbyte;