mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-25 14:27:39 +00:00
Stricter validation
This commit is contained in:
parent
cd5384f13e
commit
ed37ddd570
@ -313,6 +313,9 @@ ZygiskModule::ZygiskModule(int id, void *handle, void *entry)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ZygiskModule::RegisterModuleImpl(ApiTable *api, long *module) {
|
bool ZygiskModule::RegisterModuleImpl(ApiTable *api, long *module) {
|
||||||
|
if (api == nullptr || module == nullptr)
|
||||||
|
return false;
|
||||||
|
|
||||||
long api_version = *module;
|
long api_version = *module;
|
||||||
// Unsupported version
|
// Unsupported version
|
||||||
if (api_version > ZYGISK_API_VERSION)
|
if (api_version > ZYGISK_API_VERSION)
|
||||||
@ -355,6 +358,24 @@ bool ZygiskModule::RegisterModuleImpl(ApiTable *api, long *module) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ZygiskModule::valid() const {
|
||||||
|
if (mod.api_version == nullptr)
|
||||||
|
return false;
|
||||||
|
switch (*mod.api_version) {
|
||||||
|
case 4:
|
||||||
|
// fallthrough
|
||||||
|
case 3:
|
||||||
|
// fallthrough
|
||||||
|
case 2:
|
||||||
|
// fallthrough
|
||||||
|
case 1:
|
||||||
|
return mod.v1->impl && mod.v1->preAppSpecialize && mod.v1->postAppSpecialize &&
|
||||||
|
mod.v1->preServerSpecialize && mod.v1->postServerSpecialize;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int ZygiskModule::connectCompanion() const {
|
int ZygiskModule::connectCompanion() const {
|
||||||
if (int fd = zygisk_request(ZygiskRequest::CONNECT_COMPANION); fd >= 0) {
|
if (int fd = zygisk_request(ZygiskRequest::CONNECT_COMPANION); fd >= 0) {
|
||||||
write_int(fd, id);
|
write_int(fd, id);
|
||||||
|
@ -180,10 +180,8 @@ struct ZygiskModule {
|
|||||||
void postServerSpecialize(const ServerSpecializeArgs_v1 *args) const {
|
void postServerSpecialize(const ServerSpecializeArgs_v1 *args) const {
|
||||||
mod.v1->postServerSpecialize(mod.v1->impl, args);
|
mod.v1->postServerSpecialize(mod.v1->impl, args);
|
||||||
}
|
}
|
||||||
bool valid() const {
|
|
||||||
return entry.fn && mod.api_version;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
bool valid() const;
|
||||||
int connectCompanion() const;
|
int connectCompanion() const;
|
||||||
int getModuleDir() const;
|
int getModuleDir() const;
|
||||||
void setOption(zygisk::Option opt);
|
void setOption(zygisk::Option opt);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user