mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-11-10 07:06:34 +00:00
fs.mitm: Always mitm non-sysmodules.
This commit is contained in:
parent
46cc08160d
commit
e0c7bfc93d
4 changed files with 16 additions and 11 deletions
|
@ -106,7 +106,7 @@ Result FsMitmService::OpenBisStorage(Out<std::shared_ptr<IStorageInterface>> out
|
||||||
/* PRODINFO should *never* be writable. */
|
/* PRODINFO should *never* be writable. */
|
||||||
storage = std::make_shared<IStorageInterface>(new ROProxyStorage(bis_storage));
|
storage = std::make_shared<IStorageInterface>(new ROProxyStorage(bis_storage));
|
||||||
} else {
|
} else {
|
||||||
if (allow_writes) {
|
if (!allow_writes) {
|
||||||
storage = std::make_shared<IStorageInterface>(new ROProxyStorage(bis_storage));
|
storage = std::make_shared<IStorageInterface>(new ROProxyStorage(bis_storage));
|
||||||
} else {
|
} else {
|
||||||
/* Sysmodules should still be allowed to read and write. */
|
/* Sysmodules should still be allowed to read and write. */
|
||||||
|
@ -128,6 +128,10 @@ Result FsMitmService::OpenDataStorageByCurrentProcess(Out<std::shared_ptr<IStora
|
||||||
u32 out_domain_id = 0;
|
u32 out_domain_id = 0;
|
||||||
Result rc = 0;
|
Result rc = 0;
|
||||||
|
|
||||||
|
if (!this->should_override_contents) {
|
||||||
|
return RESULT_FORWARD_TO_SESSION;
|
||||||
|
}
|
||||||
|
|
||||||
bool has_cache = StorageCacheGetEntry(this->title_id, &storage);
|
bool has_cache = StorageCacheGetEntry(this->title_id, &storage);
|
||||||
|
|
||||||
ON_SCOPE_EXIT {
|
ON_SCOPE_EXIT {
|
||||||
|
@ -191,6 +195,10 @@ Result FsMitmService::OpenDataStorageByDataId(Out<std::shared_ptr<IStorageInterf
|
||||||
FsStorageId storage_id = (FsStorageId)sid;
|
FsStorageId storage_id = (FsStorageId)sid;
|
||||||
FsStorage data_storage;
|
FsStorage data_storage;
|
||||||
FsFile data_file;
|
FsFile data_file;
|
||||||
|
|
||||||
|
if (!this->should_override_contents) {
|
||||||
|
return RESULT_FORWARD_TO_SESSION;
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<IStorageInterface> storage = nullptr;
|
std::shared_ptr<IStorageInterface> storage = nullptr;
|
||||||
u32 out_domain_id = 0;
|
u32 out_domain_id = 0;
|
||||||
|
|
|
@ -30,9 +30,10 @@ enum FspSrvCmd : u32 {
|
||||||
class FsMitmService : public IMitmServiceObject {
|
class FsMitmService : public IMitmServiceObject {
|
||||||
private:
|
private:
|
||||||
bool has_initialized = false;
|
bool has_initialized = false;
|
||||||
|
bool should_override_contents;
|
||||||
public:
|
public:
|
||||||
FsMitmService(std::shared_ptr<Service> s) : IMitmServiceObject(s) {
|
FsMitmService(std::shared_ptr<Service> s, u64 pid) : IMitmServiceObject(s, pid) {
|
||||||
/* ... */
|
this->should_override_contents = !Utils::HasSdDisableMitMFlag(this->title_id) && Utils::HasOverrideButton(this->title_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ShouldMitm(u64 pid, u64 tid) {
|
static bool ShouldMitm(u64 pid, u64 tid) {
|
||||||
|
@ -40,12 +41,8 @@ class FsMitmService : public IMitmServiceObject {
|
||||||
if (tid == 0x010000000000001FULL) {
|
if (tid == 0x010000000000001FULL) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Utils::HasSdDisableMitMFlag(tid)) {
|
return (tid >= 0x0100000000010000ULL || Utils::HasSdMitMFlag(tid));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (tid >= 0x0100000000010000ULL || Utils::HasSdMitMFlag(tid)) && Utils::HasOverrideButton(tid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PostProcess(IMitmServiceObject *obj, IpcResponseContext *ctx);
|
static void PostProcess(IMitmServiceObject *obj, IpcResponseContext *ctx);
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 8fcac73ab2b91afe184abe48c887ea1cb9bf2076
|
Subproject commit 0bec72ca36084e9780a8c28abd4a0b24c03c18af
|
|
@ -25,7 +25,7 @@ enum SetSysCmd : u32 {
|
||||||
|
|
||||||
class SetSysMitmService : public IMitmServiceObject {
|
class SetSysMitmService : public IMitmServiceObject {
|
||||||
public:
|
public:
|
||||||
SetSysMitmService(std::shared_ptr<Service> s) : IMitmServiceObject(s) {
|
SetSysMitmService(std::shared_ptr<Service> s, u64 pid) : IMitmServiceObject(s, pid) {
|
||||||
/* ... */
|
/* ... */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue