mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-04-29 22:14:27 +02:00
Minor changes
This commit is contained in:
parent
24650eefe4
commit
7edd8be169
@ -7,7 +7,6 @@
|
||||
#include <string>
|
||||
|
||||
#include <consts.hpp>
|
||||
#include <sqlite.hpp>
|
||||
#include <base.hpp>
|
||||
#include <core.hpp>
|
||||
#include <selinux.hpp>
|
||||
|
@ -7,7 +7,6 @@
|
||||
#include <base.hpp>
|
||||
#include <core.hpp>
|
||||
#include <selinux.hpp>
|
||||
#include <sqlite.hpp>
|
||||
#include <flags.h>
|
||||
|
||||
using namespace std;
|
||||
|
@ -42,15 +42,15 @@ impl SqliteReturn for i32 {
|
||||
}
|
||||
|
||||
trait SqlTable {
|
||||
fn on_row(&mut self, columns: &[String], data: &DbValues);
|
||||
fn on_row(&mut self, columns: &[String], values: &DbValues);
|
||||
}
|
||||
|
||||
impl<T> SqlTable for T
|
||||
where
|
||||
T: FnMut(&[String], &DbValues),
|
||||
{
|
||||
fn on_row(&mut self, columns: &[String], data: &DbValues) {
|
||||
self.call_mut((columns, data))
|
||||
fn on_row(&mut self, columns: &[String], values: &DbValues) {
|
||||
self.call_mut((columns, values))
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,14 +92,14 @@ impl DbEntryKey {
|
||||
}
|
||||
|
||||
impl SqlTable for DbSettings {
|
||||
fn on_row(&mut self, columns: &[String], data: &DbValues) {
|
||||
fn on_row(&mut self, columns: &[String], values: &DbValues) {
|
||||
let mut key = "";
|
||||
let mut value = 0;
|
||||
for (i, column) in columns.iter().enumerate() {
|
||||
if column == "key" {
|
||||
key = data.get_text(i as i32);
|
||||
key = values.get_text(i as i32);
|
||||
} else if column == "value" {
|
||||
value = data.get_int(i as i32);
|
||||
value = values.get_int(i as i32);
|
||||
}
|
||||
}
|
||||
match key {
|
||||
|
@ -222,15 +222,15 @@ static bool ensure_data() {
|
||||
LOGI("denylist: initializing internal data structures\n");
|
||||
|
||||
default_new(pkg_to_procs_);
|
||||
bool res = db_exec("SELECT * FROM denylist", {}, [](StringSlice columns, DbValues &data) {
|
||||
bool res = db_exec("SELECT * FROM denylist", {}, [](StringSlice columns, const DbValues &values) {
|
||||
const char *package_name;
|
||||
const char *process;
|
||||
for (int i = 0; i < columns.size(); ++i) {
|
||||
const auto &name = columns[i];
|
||||
if (name == "package_name") {
|
||||
package_name = data.get_text(i);
|
||||
package_name = values.get_text(i);
|
||||
} else if (name == "process") {
|
||||
process = data.get_text(i);
|
||||
process = values.get_text(i);
|
||||
}
|
||||
}
|
||||
add_hide_set(package_name, process);
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
|
||||
#define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */
|
||||
#define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */
|
||||
#define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */
|
||||
|
||||
#define SQLITE_OK 0 /* Successful result */
|
||||
#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
|
||||
@ -32,7 +32,7 @@ struct DbStatement {
|
||||
|
||||
using StringSlice = rust::Slice<rust::String>;
|
||||
using sql_bind_callback = int(*)(void*, int, DbStatement&);
|
||||
using sql_exec_callback = void(*)(void*, StringSlice, DbValues&);
|
||||
using sql_exec_callback = void(*)(void*, StringSlice, const DbValues&);
|
||||
|
||||
sqlite3 *open_and_init_db();
|
||||
|
||||
@ -40,7 +40,7 @@ sqlite3 *open_and_init_db();
|
||||
* C++ APIs *
|
||||
************/
|
||||
|
||||
using db_exec_callback = std::function<void(StringSlice, DbValues&)>;
|
||||
using db_exec_callback = std::function<void(StringSlice, const DbValues&)>;
|
||||
|
||||
struct DbArg {
|
||||
enum {
|
||||
|
@ -9,9 +9,6 @@ using namespace std;
|
||||
#define DB_VERSION 12
|
||||
#define DB_VERSION_STR "12"
|
||||
|
||||
#define DBLOGV(...)
|
||||
//#define DBLOGV(...) LOGD("magiskdb: " __VA_ARGS__)
|
||||
|
||||
// SQLite APIs
|
||||
|
||||
static int (*sqlite3_open_v2)(const char *filename, sqlite3 **ppDb, int flags, const char *zVfs);
|
||||
@ -169,7 +166,7 @@ int DbStatement::bind_text(int index, rust::Str val) {
|
||||
}
|
||||
|
||||
#define sql_chk_log(fn, ...) if (int rc = fn(__VA_ARGS__); rc != SQLITE_OK) { \
|
||||
LOGE("sqlite3(db.cpp:%d): %s\n", __LINE__, sqlite3_errstr(rc)); \
|
||||
LOGE("sqlite3(line:%d): %s\n", __LINE__, sqlite3_errstr(rc)); \
|
||||
return false; \
|
||||
}
|
||||
|
||||
@ -182,15 +179,16 @@ static bool open_and_init_db_impl(sqlite3 **dbOut) {
|
||||
unique_ptr<sqlite3, decltype(sqlite3_close)> db(nullptr, sqlite3_close);
|
||||
{
|
||||
sqlite3 *sql;
|
||||
// We open the connection with SQLITE_OPEN_NOMUTEX because we are guarding it ourselves
|
||||
sql_chk_log(sqlite3_open_v2, MAGISKDB, &sql,
|
||||
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FULLMUTEX, nullptr);
|
||||
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX, nullptr);
|
||||
db.reset(sql);
|
||||
}
|
||||
|
||||
int ver = 0;
|
||||
bool upgrade = false;
|
||||
auto ver_cb = [](void *ver, auto, DbValues &data) {
|
||||
*static_cast<int *>(ver) = data.get_int(0);
|
||||
auto ver_cb = [](void *ver, auto, const DbValues &values) {
|
||||
*static_cast<int *>(ver) = values.get_int(0);
|
||||
};
|
||||
sql_chk_log(sql_exec_impl, db.get(), "PRAGMA user_version", nullptr, nullptr, ver_cb, &ver);
|
||||
if (ver > DB_VERSION) {
|
||||
@ -329,9 +327,9 @@ bool db_exec(const char *sql, DbArgs args, db_exec_callback exec_fn) {
|
||||
}
|
||||
sql_exec_callback exec_cb = nullptr;
|
||||
if (exec_fn) {
|
||||
exec_cb = [](void *v, StringSlice columns, DbValues &data) {
|
||||
exec_cb = [](void *v, StringSlice columns, const DbValues &values) {
|
||||
auto fn = static_cast<db_exec_callback*>(v);
|
||||
fn->operator()(columns, data);
|
||||
fn->operator()(columns, values);
|
||||
};
|
||||
}
|
||||
sql_chk_log(sql_exec_rs, sql, bind_cb, &bind_fn, exec_cb, &exec_fn);
|
||||
|
@ -27,7 +27,7 @@ struct su_access {
|
||||
|
||||
su_access() : policy(QUERY), log(1), notify(1) {}
|
||||
|
||||
void operator()(StringSlice columns, DbValues &data);
|
||||
void operator()(StringSlice columns, const DbValues &data);
|
||||
void silent_deny() {
|
||||
policy = DENY;
|
||||
log = 0;
|
||||
|
@ -42,7 +42,7 @@ void su_info::refresh() {
|
||||
timestamp = ts.tv_sec * 1000L + ts.tv_nsec / 1000000L;
|
||||
}
|
||||
|
||||
void su_access::operator()(StringSlice columns, DbValues &data) {
|
||||
void su_access::operator()(StringSlice columns, const DbValues &data) {
|
||||
for (int i = 0; i < columns.size(); ++i) {
|
||||
const auto &name = columns[i];
|
||||
if (name == "policy") {
|
||||
@ -130,13 +130,13 @@ bool uid_granted_root(int uid) {
|
||||
bool granted = false;
|
||||
db_exec("SELECT policy FROM policies WHERE uid=? AND (until=0 OR until>?)",
|
||||
{ uid, time(nullptr) },
|
||||
[&](auto, DbValues &data) { granted = data.get_int(0) == ALLOW; });
|
||||
[&](auto, const DbValues &values) { granted = values.get_int(0) == ALLOW; });
|
||||
return granted;
|
||||
}
|
||||
|
||||
struct policy_uid_list : public vector<int> {
|
||||
void operator()(StringSlice, DbValues &data) {
|
||||
push_back(data.get_int(0));
|
||||
void operator()(StringSlice, const DbValues &values) {
|
||||
push_back(values.get_int(0));
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user