Update Rizin to latest dev (#3352)

This commit is contained in:
Florian Märkl 2024-06-05 09:19:09 +02:00 committed by GitHub
parent 38c683b519
commit fdfc7192c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 57 additions and 67 deletions

2
rizin

@ -1 +1 @@
Subproject commit 34f1a9e7b40e289cdf8e7f03c145bdbd5d41dc89 Subproject commit a02e608075986bbb8d55c643c698f235a643e56c

View File

@ -295,22 +295,25 @@ QList<QString> CutterCore::sdbList(QString path)
CORE_LOCK(); CORE_LOCK();
QList<QString> list = QList<QString>(); QList<QString> list = QList<QString>();
Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0); Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
if (root) { if (root && root->ns) {
void *vsi; for (const auto &nsi : CutterRzList<SdbNs>(root->ns)) {
ls_iter_t *iter;
ls_foreach(root->ns, iter, vsi)
{
SdbNs *nsi = (SdbNs *)vsi;
list << nsi->name; list << nsi->name;
} }
} }
return list; return list;
} }
using SdbListPtr = std::unique_ptr<SdbList, decltype(&ls_free)>; using PVectorPtr = std::unique_ptr<RzPVector, decltype(&rz_pvector_free)>;
static SdbListPtr makeSdbListPtr(SdbList *list) static PVectorPtr makePVectorPtr(RzPVector *vec)
{ {
return { list, ls_free }; return { vec, rz_pvector_free };
}
static bool foreach_keys_cb(void *user, const SdbKv *kv)
{
auto list = reinterpret_cast<QList<QString> *>(user);
*list << kv->base.key;
return true;
} }
QList<QString> CutterCore::sdbListKeys(QString path) QList<QString> CutterCore::sdbListKeys(QString path)
@ -319,14 +322,7 @@ QList<QString> CutterCore::sdbListKeys(QString path)
QList<QString> list = QList<QString>(); QList<QString> list = QList<QString>();
Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0); Sdb *root = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
if (root) { if (root) {
void *vsi; sdb_foreach(root, foreach_keys_cb, &list);
ls_iter_t *iter;
SdbListPtr l = makeSdbListPtr(sdb_foreach_list(root, false));
ls_foreach(l, iter, vsi)
{
SdbKv *nsi = (SdbKv *)vsi;
list << reinterpret_cast<char *>(nsi->base.key);
}
} }
return list; return list;
} }
@ -336,7 +332,7 @@ QString CutterCore::sdbGet(QString path, QString key)
CORE_LOCK(); CORE_LOCK();
Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0); Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 0);
if (db) { if (db) {
const char *val = sdb_const_get(db, key.toUtf8().constData(), 0); const char *val = sdb_const_get(db, key.toUtf8().constData());
if (val && *val) if (val && *val)
return val; return val;
} }
@ -349,7 +345,7 @@ bool CutterCore::sdbSet(QString path, QString key, QString val)
Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 1); Sdb *db = sdb_ns_path(core->sdb, path.toUtf8().constData(), 1);
if (!db) if (!db)
return false; return false;
return sdb_set(db, key.toUtf8().constData(), val.toUtf8().constData(), 0); return sdb_set(db, key.toUtf8().constData(), val.toUtf8().constData());
} }
QString CutterCore::sanitizeStringForCommand(QString s) QString CutterCore::sanitizeStringForCommand(QString s)
@ -3616,21 +3612,14 @@ QList<QString> CutterCore::getAllAnalysisClasses(bool sorted)
{ {
CORE_LOCK(); CORE_LOCK();
QList<QString> ret; QList<QString> ret;
PVectorPtr l = makePVectorPtr(rz_analysis_class_get_all(core->analysis, sorted));
SdbListPtr l = makeSdbListPtr(rz_analysis_class_get_all(core->analysis, sorted));
if (!l) { if (!l) {
return ret; return ret;
} }
ret.reserve(static_cast<int>(l->length)); ret.reserve(static_cast<int>(rz_pvector_len(l.get())));
for (const auto &kv : CutterPVector<SdbKv>(l.get())) {
SdbListIter *it;
void *entry;
ls_foreach(l, it, entry)
{
auto kv = reinterpret_cast<SdbKv *>(entry);
ret.append(QString::fromUtf8(reinterpret_cast<const char *>(kv->base.key))); ret.append(QString::fromUtf8(reinterpret_cast<const char *>(kv->base.key)));
} }
return ret; return ret;
} }
@ -4371,13 +4360,14 @@ QStringList CutterCore::getColorThemes()
{ {
QStringList r; QStringList r;
CORE_LOCK(); CORE_LOCK();
RzList *themes_list = rz_core_theme_list(core); RzPVector *themes_list = rz_core_get_themes(core);
RzListIter *it; if (!themes_list) {
const char *th; return r;
CutterRzListForeach (themes_list, it, const char, th) { }
for (const auto &th : CutterPVector<char>(themes_list)) {
r << fromOwnedCharPtr(rz_str_trim_dup(th)); r << fromOwnedCharPtr(rz_str_trim_dup(th));
} }
rz_list_free(themes_list); rz_pvector_free(themes_list);
return r; return r;
} }

View File

@ -46,20 +46,20 @@ void VersionInfoDialog::fillVersionInfo()
// Left tree // Left tree
QTreeWidgetItem *addrItemL = new QTreeWidgetItem(); QTreeWidgetItem *addrItemL = new QTreeWidgetItem();
addrItemL->setText(0, "Address:"); addrItemL->setText(0, "Address:");
addrItemL->setText(1, RzAddressString(sdb_num_get(sdb, "addr", 0))); addrItemL->setText(1, RzAddressString(sdb_num_get(sdb, "addr")));
ui->leftTreeWidget->addTopLevelItem(addrItemL); ui->leftTreeWidget->addTopLevelItem(addrItemL);
QTreeWidgetItem *offItemL = new QTreeWidgetItem(); QTreeWidgetItem *offItemL = new QTreeWidgetItem();
offItemL->setText(0, "Offset:"); offItemL->setText(0, "Offset:");
offItemL->setText(1, RzAddressString(sdb_num_get(sdb, "offset", 0))); offItemL->setText(1, RzAddressString(sdb_num_get(sdb, "offset")));
ui->leftTreeWidget->addTopLevelItem(offItemL); ui->leftTreeWidget->addTopLevelItem(offItemL);
QTreeWidgetItem *entriesItemL = new QTreeWidgetItem(); QTreeWidgetItem *entriesItemL = new QTreeWidgetItem();
entriesItemL->setText(0, "Entries:"); entriesItemL->setText(0, "Entries:");
const ut64 num_entries = sdb_num_get(sdb, "num_entries", 0); const ut64 num_entries = sdb_num_get(sdb, "num_entries");
for (size_t i = 0; i < num_entries; ++i) { for (size_t i = 0; i < num_entries; ++i) {
auto key = QString("entry%0").arg(i); auto key = QString("entry%0").arg(i);
const char *const value = sdb_const_get(sdb, key.toStdString().c_str(), 0); const char *const value = sdb_const_get(sdb, key.toStdString().c_str());
if (!value) { if (!value) {
continue; continue;
} }
@ -77,12 +77,12 @@ void VersionInfoDialog::fillVersionInfo()
// Right tree // Right tree
QTreeWidgetItem *addrItemR = new QTreeWidgetItem(); QTreeWidgetItem *addrItemR = new QTreeWidgetItem();
addrItemR->setText(0, "Address:"); addrItemR->setText(0, "Address:");
addrItemR->setText(1, RzAddressString(sdb_num_get(sdb, "addr", 0))); addrItemR->setText(1, RzAddressString(sdb_num_get(sdb, "addr")));
ui->rightTreeWidget->addTopLevelItem(addrItemR); ui->rightTreeWidget->addTopLevelItem(addrItemR);
QTreeWidgetItem *offItemR = new QTreeWidgetItem(); QTreeWidgetItem *offItemR = new QTreeWidgetItem();
offItemR->setText(0, "Offset:"); offItemR->setText(0, "Offset:");
offItemR->setText(1, RzAddressString(sdb_num_get(sdb, "offset", 0))); offItemR->setText(1, RzAddressString(sdb_num_get(sdb, "offset")));
ui->rightTreeWidget->addTopLevelItem(offItemR); ui->rightTreeWidget->addTopLevelItem(offItemR);
QTreeWidgetItem *entriesItemR = new QTreeWidgetItem(); QTreeWidgetItem *entriesItemR = new QTreeWidgetItem();
@ -94,13 +94,13 @@ void VersionInfoDialog::fillVersionInfo()
if (!sdb) { if (!sdb) {
break; break;
} }
const char *filename = sdb_const_get(sdb, "file_name", 0); const char *filename = sdb_const_get(sdb, "file_name");
auto *parentItem = new QTreeWidgetItem(); auto *parentItem = new QTreeWidgetItem();
parentItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx", 0))); parentItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx")));
parentItem->setText(1, parentItem->setText(1,
QString("Version: %0\t" QString("Version: %0\t"
"File: %1") "File: %1")
.arg(QString::number(sdb_num_get(sdb, "vn_version", 0)), .arg(QString::number(sdb_num_get(sdb, "vn_version")),
QString(filename))); QString(filename)));
int num_vernaux = 0; int num_vernaux = 0;
@ -113,13 +113,13 @@ void VersionInfoDialog::fillVersionInfo()
} }
auto *childItem = new QTreeWidgetItem(); auto *childItem = new QTreeWidgetItem();
childItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx", 0))); childItem->setText(0, RzAddressString(sdb_num_get(sdb, "idx")));
QString childString = QString childString =
QString("Name: %0\t" QString("Name: %0\t"
"Flags: %1\t" "Flags: %1\t"
"Version: %2\t") "Version: %2\t")
.arg(sdb_const_get(sdb, "name", 0), sdb_const_get(sdb, "flags", 0), .arg(sdb_const_get(sdb, "name"), sdb_const_get(sdb, "flags"),
QString::number(sdb_num_get(sdb, "version", 0))); QString::number(sdb_num_get(sdb, "version")));
childItem->setText(1, childString); childItem->setText(1, childString);
parentItem->addChild(childItem); parentItem->addChild(childItem);
} }
@ -144,15 +144,15 @@ void VersionInfoDialog::fillVersionInfo()
if (!sdb) { if (!sdb) {
return; return;
} }
ut32 file_version_ms = sdb_num_get(sdb, "FileVersionMS", 0); ut32 file_version_ms = sdb_num_get(sdb, "FileVersionMS");
ut32 file_version_ls = sdb_num_get(sdb, "FileVersionLS", 0); ut32 file_version_ls = sdb_num_get(sdb, "FileVersionLS");
auto file_version = QString("%0.%1.%2.%3") auto file_version = QString("%0.%1.%2.%3")
.arg(file_version_ms >> 16) .arg(file_version_ms >> 16)
.arg(file_version_ms & 0xFFFF) .arg(file_version_ms & 0xFFFF)
.arg(file_version_ls >> 16) .arg(file_version_ls >> 16)
.arg(file_version_ls & 0xFFFF); .arg(file_version_ls & 0xFFFF);
ut32 product_version_ms = sdb_num_get(sdb, "ProductVersionMS", 0); ut32 product_version_ms = sdb_num_get(sdb, "ProductVersionMS");
ut32 product_version_ls = sdb_num_get(sdb, "ProductVersionLS", 0); ut32 product_version_ls = sdb_num_get(sdb, "ProductVersionLS");
auto product_version = QString("%0.%1.%2.%3") auto product_version = QString("%0.%1.%2.%3")
.arg(product_version_ms >> 16) .arg(product_version_ms >> 16)
.arg(product_version_ms & 0xFFFF) .arg(product_version_ms & 0xFFFF)
@ -161,12 +161,12 @@ void VersionInfoDialog::fillVersionInfo()
auto item = new QTreeWidgetItem(); auto item = new QTreeWidgetItem();
item->setText(0, "Signature"); item->setText(0, "Signature");
item->setText(1, RzHexString(sdb_num_get(sdb, "Signature", 0))); item->setText(1, RzHexString(sdb_num_get(sdb, "Signature")));
ui->leftTreeWidget->addTopLevelItem(item); ui->leftTreeWidget->addTopLevelItem(item);
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setText(0, "StrucVersion"); item->setText(0, "StrucVersion");
item->setText(1, RzHexString(sdb_num_get(sdb, "StrucVersion", 0))); item->setText(1, RzHexString(sdb_num_get(sdb, "StrucVersion")));
ui->leftTreeWidget->addTopLevelItem(item); ui->leftTreeWidget->addTopLevelItem(item);
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
@ -181,27 +181,27 @@ void VersionInfoDialog::fillVersionInfo()
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setText(0, "FileFlagsMask"); item->setText(0, "FileFlagsMask");
item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlagsMask", 0))); item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlagsMask")));
ui->leftTreeWidget->addTopLevelItem(item); ui->leftTreeWidget->addTopLevelItem(item);
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setText(0, "FileFlags"); item->setText(0, "FileFlags");
item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlags", 0))); item->setText(1, RzHexString(sdb_num_get(sdb, "FileFlags")));
ui->leftTreeWidget->addTopLevelItem(item); ui->leftTreeWidget->addTopLevelItem(item);
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setText(0, "FileOS"); item->setText(0, "FileOS");
item->setText(1, RzHexString(sdb_num_get(sdb, "FileOS", 0))); item->setText(1, RzHexString(sdb_num_get(sdb, "FileOS")));
ui->leftTreeWidget->addTopLevelItem(item); ui->leftTreeWidget->addTopLevelItem(item);
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setText(0, "FileType"); item->setText(0, "FileType");
item->setText(1, RzHexString(sdb_num_get(sdb, "FileType", 0))); item->setText(1, RzHexString(sdb_num_get(sdb, "FileType")));
ui->leftTreeWidget->addTopLevelItem(item); ui->leftTreeWidget->addTopLevelItem(item);
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setText(0, "FileSubType"); item->setText(0, "FileSubType");
item->setText(1, RzHexString(sdb_num_get(sdb, "FileSubType", 0))); item->setText(1, RzHexString(sdb_num_get(sdb, "FileSubType")));
ui->leftTreeWidget->addTopLevelItem(item); ui->leftTreeWidget->addTopLevelItem(item);
// Adjust columns to content // Adjust columns to content
@ -224,8 +224,8 @@ void VersionInfoDialog::fillVersionInfo()
} }
int lenkey = 0; int lenkey = 0;
int lenval = 0; int lenval = 0;
ut8 *key_utf16 = sdb_decode(sdb_const_get(sdb, "key", 0), &lenkey); ut8 *key_utf16 = sdb_decode(sdb_const_get(sdb, "key"), &lenkey);
ut8 *val_utf16 = sdb_decode(sdb_const_get(sdb, "value", 0), &lenval); ut8 *val_utf16 = sdb_decode(sdb_const_get(sdb, "value"), &lenval);
item = new QTreeWidgetItem(); item = new QTreeWidgetItem();
item->setText(0, QString::fromUtf16(reinterpret_cast<const ushort *>(key_utf16))); item->setText(0, QString::fromUtf16(reinterpret_cast<const ushort *>(key_utf16)));
item->setText(1, QString::fromUtf16(reinterpret_cast<const ushort *>(val_utf16))); item->setText(1, QString::fromUtf16(reinterpret_cast<const ushort *>(val_utf16)));

View File

@ -12,7 +12,7 @@ BaseFindDialog::BaseFindDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Ba
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint)); setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
// Fill in N-thread Combo // Fill in N-thread Combo
size_t n_cores = rz_th_physical_core_number(); RzThreadNCores n_cores = rz_th_physical_core_number();
ui->nCoresCombo->clear(); ui->nCoresCombo->clear();
for (size_t i = n_cores; i > 0; i--) { for (size_t i = n_cores; i > 0; i--) {
if (n_cores == i) { if (n_cores == i) {
@ -36,10 +36,10 @@ BaseFindDialog::BaseFindDialog(QWidget *parent) : QDialog(parent), ui(new Ui::Ba
BaseFindDialog::~BaseFindDialog() {} BaseFindDialog::~BaseFindDialog() {}
size_t BaseFindDialog::getNCores() const RzThreadNCores BaseFindDialog::getNCores() const
{ {
size_t n_cores = rz_th_physical_core_number(); RzThreadNCores n_cores = rz_th_physical_core_number();
return n_cores - ui->nCoresCombo->currentIndex(); return static_cast<RzThreadNCores>(n_cores - ui->nCoresCombo->currentIndex());
} }
ut32 BaseFindDialog::getPointerSize() const ut32 BaseFindDialog::getPointerSize() const

View File

@ -19,7 +19,7 @@ public:
explicit BaseFindDialog(QWidget *parent = nullptr); explicit BaseFindDialog(QWidget *parent = nullptr);
~BaseFindDialog(); ~BaseFindDialog();
size_t getNCores() const; RzThreadNCores getNCores() const;
ut32 getPointerSize() const; ut32 getPointerSize() const;
RVA getStartAddress() const; RVA getStartAddress() const;
RVA getEndAddress() const; RVA getEndAddress() const;

View File

@ -20,7 +20,7 @@ BaseFindSearchDialog::~BaseFindSearchDialog() {}
void BaseFindSearchDialog::show(RzBaseFindOpt *opts) void BaseFindSearchDialog::show(RzBaseFindOpt *opts)
{ {
size_t n_cores = rz_th_physical_core_number(); RzThreadNCores n_cores = rz_th_physical_core_number();
if (opts->max_threads > n_cores || opts->max_threads < 1) { if (opts->max_threads > n_cores || opts->max_threads < 1) {
opts->max_threads = n_cores; opts->max_threads = n_cores;
} }

View File

@ -40,7 +40,7 @@ void Dashboard::updateContents()
if (bf) { if (bf) {
setPlainText(this->ui->compilationDateEdit, rz_core_bin_get_compile_time(bf)); setPlainText(this->ui->compilationDateEdit, rz_core_bin_get_compile_time(bf));
if (bf->o) { if (bf->o) {
char *relco_buf = sdb_get(bf->o->kv, "elf.relro", 0); char *relco_buf = sdb_get(bf->o->kv, "elf.relro");
if (RZ_STR_ISNOTEMPTY(relco_buf)) { if (RZ_STR_ISNOTEMPTY(relco_buf)) {
QString relro = QString(relco_buf).section(QLatin1Char(' '), 0, 0); QString relro = QString(relco_buf).section(QLatin1Char(' '), 0, 0);
relro[0] = relro[0].toUpper(); relro[0] = relro[0].toUpper();