Code cleanup (#1535)

This commit is contained in:
xarkes 2019-05-17 13:40:50 +02:00 committed by Florian Märkl
parent ef22f20548
commit 2734ff026a
5 changed files with 70 additions and 74 deletions

View File

@ -2,7 +2,6 @@ import argparse
import importlib.util import importlib.util
import logging import logging
import os import os
import pprint
import subprocess import subprocess
import sys import sys

View File

@ -823,15 +823,12 @@ QString CutterCore::disassembleSingleInstruction(RVA addr)
RAnalFunction *CutterCore::functionAt(ut64 addr) RAnalFunction *CutterCore::functionAt(ut64 addr)
{ {
CORE_LOCK(); CORE_LOCK();
//return r_anal_fcn_find (core_->anal, addr, addr);
return r_anal_get_fcn_in(core_->anal, addr, 0); return r_anal_get_fcn_in(core_->anal, addr, 0);
} }
QString CutterCore::cmdFunctionAt(QString addr) QString CutterCore::cmdFunctionAt(QString addr)
{ {
QString ret; QString ret;
//afi~name:1[1] @ 0x08048e44
//ret = cmd("afi~name[1] @ " + addr);
ret = cmd(QString("fd @ ") + addr + "~[0]"); ret = cmd(QString("fd @ ") + addr + "~[0]");
return ret.trimmed(); return ret.trimmed();
} }
@ -1534,8 +1531,8 @@ QList<FunctionDescription> CutterCore::getAllFunctions()
{ {
CORE_LOCK(); CORE_LOCK();
QList<FunctionDescription> ret; QList<FunctionDescription> funcList;
ret.reserve(r_list_length(core_->anal->fcns)); funcList.reserve(r_list_length(core_->anal->fcns));
RListIter *iter; RListIter *iter;
RAnalFunction *fcn; RAnalFunction *fcn;
@ -1554,10 +1551,10 @@ QList<FunctionDescription> CutterCore::getAllFunctions()
function.name = fcn->name ? QString::fromUtf8(fcn->name) : QString(); function.name = fcn->name ? QString::fromUtf8(fcn->name) : QString();
function.edges = r_anal_fcn_count_edges(fcn, nullptr); function.edges = r_anal_fcn_count_edges(fcn, nullptr);
function.stackframe = fcn->maxstack; function.stackframe = fcn->maxstack;
ret.append(function); funcList.append(function);
} }
return ret; return funcList;
} }
QList<ImportDescription> CutterCore::getAllImports() QList<ImportDescription> CutterCore::getAllImports()
@ -1670,7 +1667,7 @@ QList<HeaderDescription> CutterCore::getAllHeaders()
QList<ZignatureDescription> CutterCore::getAllZignatures() QList<ZignatureDescription> CutterCore::getAllZignatures()
{ {
CORE_LOCK(); CORE_LOCK();
QList<ZignatureDescription> ret; QList<ZignatureDescription> zignatures;
QJsonArray zignaturesArray = cmdj("zj").array(); QJsonArray zignaturesArray = cmdj("zj").array();
@ -1692,10 +1689,10 @@ QList<ZignatureDescription> CutterCore::getAllZignatures()
zignature.edges = graphObject[RJsonKey::edges].toVariant().toULongLong(); zignature.edges = graphObject[RJsonKey::edges].toVariant().toULongLong();
zignature.ebbs = graphObject[RJsonKey::ebbs].toVariant().toULongLong(); zignature.ebbs = graphObject[RJsonKey::ebbs].toVariant().toULongLong();
ret << zignature; zignatures << zignature;
} }
return ret; return zignatures;
} }
QList<CommentDescription> CutterCore::getAllComments(const QString &filterType) QList<CommentDescription> CutterCore::getAllComments(const QString &filterType)
@ -1822,7 +1819,7 @@ QList<FlagDescription> CutterCore::getAllFlags(QString flagspace)
QList<SectionDescription> CutterCore::getAllSections() QList<SectionDescription> CutterCore::getAllSections()
{ {
CORE_LOCK(); CORE_LOCK();
QList<SectionDescription> ret; QList<SectionDescription> sections;
QJsonDocument sectionsDoc = cmdj("iSj entropy"); QJsonDocument sectionsDoc = cmdj("iSj entropy");
QJsonObject sectionsObj = sectionsDoc.object(); QJsonObject sectionsObj = sectionsDoc.object();
@ -1844,9 +1841,9 @@ QList<SectionDescription> CutterCore::getAllSections()
section.perm = sectionObject[RJsonKey::perm].toString(); section.perm = sectionObject[RJsonKey::perm].toString();
section.entropy = sectionObject[RJsonKey::entropy].toString(); section.entropy = sectionObject[RJsonKey::entropy].toString();
ret << section; sections << section;
} }
return ret; return sections;
} }
QStringList CutterCore::getSectionList() QStringList CutterCore::getSectionList()
@ -2084,25 +2081,25 @@ QList<AnalBaseClassDescription> CutterCore::getAnalClassBaseClasses(const QStrin
QList<AnalVTableDescription> CutterCore::getAnalClassVTables(const QString &cls) QList<AnalVTableDescription> CutterCore::getAnalClassVTables(const QString &cls)
{ {
QList<AnalVTableDescription> ret; QList<AnalVTableDescription> acVtables;
RVector *vtables = r_anal_class_vtable_get_all(core_->anal, cls.toUtf8().constData()); RVector *vtables = r_anal_class_vtable_get_all(core_->anal, cls.toUtf8().constData());
if (!vtables) { if (!vtables) {
return ret; return acVtables;
} }
ret.reserve(static_cast<int>(vtables->len)); acVtables.reserve(static_cast<int>(vtables->len));
RAnalVTable *vtable; RAnalVTable *vtable;
CutterRVectorForeach(vtables, vtable, RAnalVTable) { CutterRVectorForeach(vtables, vtable, RAnalVTable) {
AnalVTableDescription desc; AnalVTableDescription desc;
desc.id = QString::fromUtf8(vtable->id); desc.id = QString::fromUtf8(vtable->id);
desc.offset = vtable->offset; desc.offset = vtable->offset;
desc.addr = vtable->addr; desc.addr = vtable->addr;
ret.append(desc); acVtables.append(desc);
} }
r_vector_free(vtables); r_vector_free(vtables);
return ret; return acVtables;
} }
void CutterCore::createNewClass(const QString &cls) void CutterCore::createNewClass(const QString &cls)
@ -2151,7 +2148,7 @@ void CutterCore::renameAnalMethod(const QString &className, const QString &oldMe
QList<ResourcesDescription> CutterCore::getAllResources() QList<ResourcesDescription> CutterCore::getAllResources()
{ {
CORE_LOCK(); CORE_LOCK();
QList<ResourcesDescription> ret; QList<ResourcesDescription> resources;
QJsonArray resourcesArray = cmdj("iRj").array(); QJsonArray resourcesArray = cmdj("iRj").array();
for (const QJsonValue &value : resourcesArray) { for (const QJsonValue &value : resourcesArray) {
@ -2166,15 +2163,15 @@ QList<ResourcesDescription> CutterCore::getAllResources()
res.size = resourceObject[RJsonKey::size].toVariant().toULongLong(); res.size = resourceObject[RJsonKey::size].toVariant().toULongLong();
res.lang = resourceObject[RJsonKey::lang].toString(); res.lang = resourceObject[RJsonKey::lang].toString();
ret << res; resources << res;
} }
return ret; return resources;
} }
QList<VTableDescription> CutterCore::getAllVTables() QList<VTableDescription> CutterCore::getAllVTables()
{ {
CORE_LOCK(); CORE_LOCK();
QList<VTableDescription> ret; QList<VTableDescription> vtables;
QJsonArray vTablesArray = cmdj("avj").array(); QJsonArray vTablesArray = cmdj("avj").array();
for (const QJsonValue &vTableValue : vTablesArray) { for (const QJsonValue &vTableValue : vTablesArray) {
@ -2196,28 +2193,28 @@ QList<VTableDescription> CutterCore::getAllVTables()
res.methods << method; res.methods << method;
} }
ret << res; vtables << res;
} }
return ret; return vtables;
} }
QList<TypeDescription> CutterCore::getAllTypes() QList<TypeDescription> CutterCore::getAllTypes()
{ {
QList<TypeDescription> ret; QList<TypeDescription> types;
ret.append(getAllPrimitiveTypes()); types.append(getAllPrimitiveTypes());
ret.append(getAllUnions()); types.append(getAllUnions());
ret.append(getAllStructs()); types.append(getAllStructs());
ret.append(getAllEnums()); types.append(getAllEnums());
ret.append(getAllTypedefs()); types.append(getAllTypedefs());
return ret; return types;
} }
QList<TypeDescription> CutterCore::getAllPrimitiveTypes() QList<TypeDescription> CutterCore::getAllPrimitiveTypes()
{ {
CORE_LOCK(); CORE_LOCK();
QList<TypeDescription> ret; QList<TypeDescription> primitiveTypes;
QJsonArray typesArray = cmdj("tj").array(); QJsonArray typesArray = cmdj("tj").array();
for (const QJsonValue &value : typesArray) { for (const QJsonValue &value : typesArray) {
@ -2229,16 +2226,16 @@ QList<TypeDescription> CutterCore::getAllPrimitiveTypes()
exp.size = typeObject[RJsonKey::size].toVariant().toULongLong(); exp.size = typeObject[RJsonKey::size].toVariant().toULongLong();
exp.format = typeObject[RJsonKey::format].toString(); exp.format = typeObject[RJsonKey::format].toString();
exp.category = tr("Primitive"); exp.category = tr("Primitive");
ret << exp; primitiveTypes << exp;
} }
return ret; return primitiveTypes;
} }
QList<TypeDescription> CutterCore::getAllUnions() QList<TypeDescription> CutterCore::getAllUnions()
{ {
CORE_LOCK(); CORE_LOCK();
QList<TypeDescription> ret; QList<TypeDescription> unions;
QJsonArray typesArray = cmdj("tuj").array(); QJsonArray typesArray = cmdj("tuj").array();
for (const QJsonValue value: typesArray) { for (const QJsonValue value: typesArray) {
@ -2249,16 +2246,16 @@ QList<TypeDescription> CutterCore::getAllUnions()
exp.type = typeObject[RJsonKey::type].toString(); exp.type = typeObject[RJsonKey::type].toString();
exp.size = typeObject[RJsonKey::size].toVariant().toULongLong(); exp.size = typeObject[RJsonKey::size].toVariant().toULongLong();
exp.category = "Union"; exp.category = "Union";
ret << exp; unions << exp;
} }
return ret; return unions;
} }
QList<TypeDescription> CutterCore::getAllStructs() QList<TypeDescription> CutterCore::getAllStructs()
{ {
CORE_LOCK(); CORE_LOCK();
QList<TypeDescription> ret; QList<TypeDescription> structs;
QJsonArray typesArray = cmdj("tsj").array(); QJsonArray typesArray = cmdj("tsj").array();
for (const QJsonValue value: typesArray) { for (const QJsonValue value: typesArray) {
@ -2269,16 +2266,16 @@ QList<TypeDescription> CutterCore::getAllStructs()
exp.type = typeObject[RJsonKey::type].toString(); exp.type = typeObject[RJsonKey::type].toString();
exp.size = typeObject[RJsonKey::size].toVariant().toULongLong(); exp.size = typeObject[RJsonKey::size].toVariant().toULongLong();
exp.category = "Struct"; exp.category = "Struct";
ret << exp; structs << exp;
} }
return ret; return structs;
} }
QList<TypeDescription> CutterCore::getAllEnums() QList<TypeDescription> CutterCore::getAllEnums()
{ {
CORE_LOCK(); CORE_LOCK();
QList<TypeDescription> ret; QList<TypeDescription> enums;
QJsonObject typesObject = cmdj("tej").object(); QJsonObject typesObject = cmdj("tej").object();
for (QString key: typesObject.keys()) { for (QString key: typesObject.keys()) {
@ -2286,16 +2283,16 @@ QList<TypeDescription> CutterCore::getAllEnums()
exp.type = key; exp.type = key;
exp.size = 0; exp.size = 0;
exp.category = "Enum"; exp.category = "Enum";
ret << exp; enums << exp;
} }
return ret; return enums;
} }
QList<TypeDescription> CutterCore::getAllTypedefs() QList<TypeDescription> CutterCore::getAllTypedefs()
{ {
CORE_LOCK(); CORE_LOCK();
QList<TypeDescription> ret; QList<TypeDescription> typeDefs;
QJsonObject typesObject = cmdj("ttj").object(); QJsonObject typesObject = cmdj("ttj").object();
for (QString key: typesObject.keys()) { for (QString key: typesObject.keys()) {
@ -2303,34 +2300,35 @@ QList<TypeDescription> CutterCore::getAllTypedefs()
exp.type = key; exp.type = key;
exp.size = 0; exp.size = 0;
exp.category = "Typedef"; exp.category = "Typedef";
ret << exp; typeDefs << exp;
} }
return ret; return typeDefs;
} }
QString CutterCore::addTypes(const char *str) QString CutterCore::addTypes(const char *str)
{ {
char *error_msg = nullptr; char *error_msg = nullptr;
char *parsed = r_parse_c_string(core_->anal, str, &error_msg); char *parsed = r_parse_c_string(core_->anal, str, &error_msg);
QString error;
if (!parsed) { if (!parsed) {
QString ret;
if (error_msg) { if (error_msg) {
ret = error_msg; error = error_msg;
r_mem_free(error_msg); r_mem_free(error_msg);
} }
return ret; return error;
} }
r_anal_save_parsed_type(core_->anal, parsed); r_anal_save_parsed_type(core_->anal, parsed);
r_mem_free(parsed); r_mem_free(parsed);
if (error_msg) { if (error_msg) {
error = error_msg;
r_mem_free(error_msg); r_mem_free(error_msg);
} }
return QString(); return error;
} }
bool CutterCore::isAddressMapped(RVA addr) bool CutterCore::isAddressMapped(RVA addr)
@ -2342,7 +2340,7 @@ bool CutterCore::isAddressMapped(RVA addr)
QList<SearchDescription> CutterCore::getAllSearch(QString search_for, QString space) QList<SearchDescription> CutterCore::getAllSearch(QString search_for, QString space)
{ {
CORE_LOCK(); CORE_LOCK();
QList<SearchDescription> ret; QList<SearchDescription> searchRef;
QJsonArray searchArray = cmdj(space + QString(" ") + search_for).array(); QJsonArray searchArray = cmdj(space + QString(" ") + search_for).array();
@ -2362,7 +2360,7 @@ QList<SearchDescription> CutterCore::getAllSearch(QString search_for, QString sp
searchObject[RJsonKey::opcodes].toArray().first().toObject()[RJsonKey::offset].toVariant().toULongLong(); searchObject[RJsonKey::opcodes].toArray().first().toObject()[RJsonKey::offset].toVariant().toULongLong();
exp.size = searchObject[RJsonKey::size].toVariant().toULongLong(); exp.size = searchObject[RJsonKey::size].toVariant().toULongLong();
ret << exp; searchRef << exp;
} }
} else { } else {
for (const QJsonValue &value : searchArray) { for (const QJsonValue &value : searchArray) {
@ -2375,25 +2373,25 @@ QList<SearchDescription> CutterCore::getAllSearch(QString search_for, QString sp
exp.code = searchObject[RJsonKey::code].toString(); exp.code = searchObject[RJsonKey::code].toString();
exp.data = searchObject[RJsonKey::data].toString(); exp.data = searchObject[RJsonKey::data].toString();
ret << exp; searchRef << exp;
} }
} }
return ret; return searchRef;
} }
BlockStatistics CutterCore::getBlockStatistics(unsigned int blocksCount) BlockStatistics CutterCore::getBlockStatistics(unsigned int blocksCount)
{ {
BlockStatistics blockStats;
if (blocksCount == 0) { if (blocksCount == 0) {
BlockStatistics ret; blockStats.from = blockStats.to = blockStats.blocksize = 0;
ret.from = ret.to = ret.blocksize = 0; return blockStats;
return ret;
} }
QJsonObject statsObj = cmdj("p-j " + QString::number(blocksCount)).object(); QJsonObject statsObj = cmdj("p-j " + QString::number(blocksCount)).object();
BlockStatistics ret; blockStats.from = statsObj[RJsonKey::from].toVariant().toULongLong();
ret.from = statsObj[RJsonKey::from].toVariant().toULongLong(); blockStats.to = statsObj[RJsonKey::to].toVariant().toULongLong();
ret.to = statsObj[RJsonKey::to].toVariant().toULongLong(); blockStats.blocksize = statsObj[RJsonKey::blocksize].toVariant().toULongLong();
ret.blocksize = statsObj[RJsonKey::blocksize].toVariant().toULongLong();
QJsonArray blocksArray = statsObj[RJsonKey::blocks].toArray(); QJsonArray blocksArray = statsObj[RJsonKey::blocks].toArray();
@ -2425,16 +2423,16 @@ BlockStatistics CutterCore::getBlockStatistics(unsigned int blocksCount)
} }
} }
ret.blocks << block; blockStats.blocks << block;
} }
return ret; return blockStats;
} }
QList<XrefDescription> CutterCore::getXRefs(RVA addr, bool to, bool whole_function, QList<XrefDescription> CutterCore::getXRefs(RVA addr, bool to, bool whole_function,
const QString &filterType) const QString &filterType)
{ {
QList<XrefDescription> ret = QList<XrefDescription>(); QList<XrefDescription> xrefList = QList<XrefDescription>();
QJsonArray xrefsArray; QJsonArray xrefsArray;
@ -2478,10 +2476,10 @@ QList<XrefDescription> CutterCore::getXRefs(RVA addr, bool to, bool whole_functi
} }
xref.to_str = Core()->cmd("fd " + QString::number(xref.to)).trimmed(); xref.to_str = Core()->cmd("fd " + QString::number(xref.to)).trimmed();
ret << xref; xrefList << xref;
} }
return ret; return xrefList;
} }
void CutterCore::addFlag(RVA offset, QString name, RVA size) void CutterCore::addFlag(RVA offset, QString name, RVA size)
@ -2658,7 +2656,7 @@ void CutterCore::loadScript(const QString &scriptname)
QString CutterCore::getVersionInformation() QString CutterCore::getVersionInformation()
{ {
int i; int i;
QString ret; QString versionInfo;
struct vcs_t { struct vcs_t {
const char *name; const char *name;
const char *(*callback)(); const char *(*callback)();
@ -2689,13 +2687,13 @@ QString CutterCore::getVersionInformation()
/* ... */ /* ... */
{NULL, NULL} {NULL, NULL}
}; };
ret.append(QString("%1 r2\n").arg(R2_GITTAP)); versionInfo.append(QString("%1 r2\n").arg(R2_GITTAP));
for (i = 0; vcs[i].name; i++) { for (i = 0; vcs[i].name; i++) {
struct vcs_t *v = &vcs[i]; struct vcs_t *v = &vcs[i];
const char *name = v->callback (); const char *name = v->callback ();
ret.append(QString("%1 %2\n").arg(name, v->name)); versionInfo.append(QString("%1 %2\n").arg(name, v->name));
} }
return ret; return versionInfo;
} }
QJsonArray CutterCore::getOpenedFiles() QJsonArray CutterCore::getOpenedFiles()

View File

@ -392,7 +392,7 @@ void MainWindow::addMenuFileAction(QAction *action)
ui->menuFile->addAction(action); ui->menuFile->addAction(action);
} }
void MainWindow::openNewFile(InitialOptions options, bool skipOptionsDialog) void MainWindow::openNewFile(InitialOptions &options, bool skipOptionsDialog)
{ {
setFilename(options.filename); setFilename(options.filename);

View File

@ -65,7 +65,7 @@ public:
explicit MainWindow(QWidget *parent = nullptr); explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override; ~MainWindow() override;
void openNewFile(InitialOptions options = InitialOptions(), bool skipOptionsDialog = false); void openNewFile(InitialOptions &options, bool skipOptionsDialog = false);
void displayNewFileDialog(); void displayNewFileDialog();
void displayWelcomeDialog(); void displayWelcomeDialog();
void closeNewFileDialog(); void closeNewFileDialog();

View File

@ -16,7 +16,6 @@ class QtResLoader:
code = cls.get_code(module.__name__) code = cls.get_code(module.__name__)
if code is None: if code is None:
raise ImportError("get_code() failed") raise ImportError("get_code() failed")
return
exec(code, module.__dict__) exec(code, module.__dict__)
class QtResFinder: class QtResFinder: