topjohnwu
810d27a618
Use /data as tmpfs mount point in 2SI setup
...
Design credit to @yujincheng08
Close #5146 . Fix #5491 , fix #3752
Previously, Magisk changes the mount point from /system to /system_root
by patching fstab to prevent the original init from changing root.
The reason why we want to prevent the original init from switching the
root directory is because it will then be read-only, making patching
and injecting magiskinit into the boot chain difficult.
This commit (ab)uses the fact that the /data folder will never be part
of early mount (because it is handled very late in the boot by vold),
so that we can use it as the mount point of tmpfs to store files.
Some advantages of this method:
- No need to switch root manually
- No need to modify fstab, which significantly improves compatibility
e.g. avoid hacks for weird devices like those using oplus.fstab,
and avoid hacking init to bypass fstab in device trees
- Supports skip_mount.cfg
- Support DSU
2022-03-13 05:06:08 -07:00
topjohnwu
9b60c005c7
Support multiple CPIO concatenated
2022-03-13 04:23:00 -07:00
topjohnwu
563a587882
Initialize local variables
...
Fix #5542
2022-03-09 20:43:42 -08:00
topjohnwu
0c681cdab4
Check null before dereferencing fds_to_ignore
2022-03-03 21:34:53 -08:00
topjohnwu
80dd37ee31
Add missing specialize arguments
2022-03-02 22:01:35 -08:00
topjohnwu
e0b5645064
Revert "Directly use getrandom system call if possible"
...
This reverts commit e7c82f20e3
.
Fix #5516
2022-03-02 19:50:47 -08:00
topjohnwu
548d70f30c
Mount with original option
...
Fix #5481 , close #5486
2022-03-01 20:09:59 -08:00
topjohnwu
9968af0785
Move all permission check into daemon.cpp
2022-03-01 03:15:38 -08:00
topjohnwu
be7586137c
Reduce C++ wizardry
2022-03-01 03:15:38 -08:00
LoveSy
7999b66c3c
Refactor daemon connection
2022-03-01 03:15:38 -08:00
vvb2060
c82a46c1ee
Check property before switch mem cgroup
2022-02-28 23:27:23 -08:00
vvb2060
666ab1941f
Fix app request fifo wait
2022-02-28 23:26:59 -08:00
topjohnwu
e7c82f20e3
Directly use getrandom system call if possible
2022-02-16 23:57:28 -08:00
LoveSy
afa771a980
Set dlopen reserved size to unlimited
2022-02-16 23:05:17 -08:00
topjohnwu
4c80808997
Check packages.xml inode to trigger app rescan
2022-02-14 02:57:33 -08:00
topjohnwu
d021bca6ef
Prevent app_process from setting umask
...
Fix #5435
2022-02-11 01:26:24 -08:00
topjohnwu
55ed6109c1
Use dynamic_bitset.emplace_back()
2022-02-11 01:10:26 -08:00
LoveSy
88e8f2bf83
Proper escape :
and \
when binding intent
2022-02-11 01:07:28 -08:00
topjohnwu
605eae21bc
Remove unnecessary read/write
...
Close #5425
2022-02-11 00:24:12 -08:00
topjohnwu
93eb277a88
Update error messages
2022-02-11 00:01:51 -08:00
LoveSy
8edf556c9e
Fix lz4_lg compress
2022-02-10 23:50:19 -08:00
topjohnwu
7fcb63230f
Support lz4_legacy archive with multiple magic
...
Multiple lz4_legacy archives can be directly concatenated
2022-02-10 23:49:17 -08:00
canyie
ebb0ec6c42
Make xmmap() returns nullptr when fails
...
In the constructor of mmap_data, there are two possible values when fails: nullptr if fstat() fails, and MAP_FAILED if mmap() fails, but mmap_data treated MAP_FAILED as valid address and crashes.
2022-02-08 00:49:47 -08:00
LoveSy
188546515c
Fix UID tracking
2022-02-08 00:49:22 -08:00
topjohnwu
c8990b0f68
Rewrite UID tracking
2022-02-07 02:46:47 -08:00
topjohnwu
3145e67feb
Update data structure
2022-02-07 00:17:07 -08:00
topjohnwu
a7392ed3d7
Fix MULTIUSER_MODE_OWNER_MANAGED
2022-02-06 06:46:09 -08:00
topjohnwu
a4f97fa151
Fix buffer overflow in connect.cpp
2022-02-06 05:52:11 -08:00
LoveSy
ff7ac582f0
Refactor Zygisk loading
...
Co-authored-by: topjohnwu <topjohnwu@gmail.com>
2022-02-06 00:27:31 -08:00
LoveSy
d2c2456fbe
Don't use getmntent_r
from system's libc
...
Fix #5354
Co-authored-by: topjohnwu <topjohnwu@gmail.com>
2022-02-04 23:19:12 -08:00
LoveSy
e9f562a8b7
Fix abuse of fdopendir
...
After `fdopendir`, the fd is no longer usable. Should dup and
make use of RAII
Co-authored-by: 残页 <31466456+canyie@users.noreply.github.com>
2022-02-04 22:54:34 -08:00
残页
79620c97d1
Invalidate Samsung's persist.sys.zygote.early
...
Samsung FDE devices with the "persist.sys.zygote.early=true" property will cause Zygote to start before post-fs-data. According to Magisk's document, the post-fs-data phase should always happen before Zygote is started. Features assuming this behavior (like Zygisk and modules that need to control zygote) will not work. To avoid breaking existing modules, we simply invalidate this property to prevent this non-standard behavior from happening
Fix #5299 , fix #5328 , fix #5308
Co-authored-by: LoveSy <shana@zju.edu.cn>
2022-02-03 00:46:52 -08:00
topjohnwu
7f65f7d3ca
Separate libc.a hacks into its own component
2022-01-31 02:09:08 -08:00
topjohnwu
9fa096c6f4
Add runtime FORTIFY support
...
Gingerbread libc.a missing symbols
2022-01-31 01:49:37 -08:00
LoveSy
70415a396a
Do not filter uid == 1000 for process info
2022-01-30 08:25:24 -08:00
topjohnwu
3bf47a6838
Update selinux
2022-01-30 08:18:04 -08:00
topjohnwu
d3d28f0623
Update to NDK r23b
...
Credits: @yujincheng08
Close #5193
2022-01-30 07:11:51 -08:00
topjohnwu
06531f6d06
Add annotations to suppress warnings
2022-01-25 04:16:14 -08:00
topjohnwu
2b303a7e23
Add a missing busybox patch back
...
Hopefully, fix #4174
2022-01-25 03:37:59 -08:00
topjohnwu
45483fde74
Update CLI usages
2022-01-25 02:04:15 -08:00
topjohnwu
2fe3082518
Update busybox
2022-01-24 23:20:36 -08:00
topjohnwu
5a889d28c8
Pick a more reasonable zopfli config
...
Close #4980
2022-01-24 23:07:49 -08:00
topjohnwu
c6dcff0ae7
Minor dynamic_bitset changes
2022-01-24 22:30:19 -08:00
LoveSy
02dd962601
Don't load zygisk module for magisk app
2022-01-24 03:05:12 -08:00
topjohnwu
cbe97cdfde
Fix dynamic_bitset implementation
2022-01-23 04:39:00 -08:00
topjohnwu
407dfc7547
Always write 0 to fd
2022-01-23 04:19:07 -08:00
topjohnwu
fbe17dde03
Add flag for unloaded Zygisk modules
2022-01-21 05:37:47 -08:00
John Wu
c826318da4
Update CLI usage text
2022-01-20 01:59:01 -08:00
LoveSy
6582a4abd9
Make magiskpolicy supports multiple --apply
2022-01-20 01:59:01 -08:00
topjohnwu
195d885887
Reduce log spamming
2022-01-20 00:18:46 -08:00
topjohnwu
519bd2f30f
Disable AVD hacks by default
2022-01-19 20:28:01 -08:00
topjohnwu
20ef724fad
Add new build command avd_patch
2022-01-19 05:12:11 -08:00
vvb2060
f443cbaa2b
Revert "Always run non disabled module post-fs-data scripts"
...
This reverts commit 4dfb193d10
.
2022-01-18 04:48:47 -08:00
topjohnwu
bb7a74e4b4
Add Zygisk API getFlags()
2022-01-17 19:54:33 -08:00
topjohnwu
76ddfeb93a
Allow modifying denylist without enforcement
2022-01-15 23:46:22 -08:00
LoveSy
c38b826abf
Skip overlayfs for post-fs-data mount
...
adb remount will introduce overlayfs for /system and /vendor, we should
skip mounting as overlayfs. This also helps us support overlayfs Magisk
later.
2022-01-14 03:42:37 -08:00
topjohnwu
21d7db0959
Add new Zygisk API to get module dir
2022-01-14 03:10:02 -08:00
LoveSy
b2cd24ed1b
Fix an UB when cil compile error
2022-01-11 03:01:27 -08:00
topjohnwu
f4926cb822
Small refactoring
2022-01-02 16:09:03 -08:00
topjohnwu
1e77e0862a
Separate fstab finding to its own function
2022-01-02 15:49:12 -08:00
topjohnwu
8c696cb8ca
Minor code refactoring
2021-12-28 23:37:06 -08:00
LoveSy
62ef8ade8f
Skip loading Magisk when detecting DSU
...
Fix #4402
Co-authored-by: topjohnwu <topjohnwu@gmail.com>
2021-12-28 21:04:09 -08:00
LoveSy
3d88dd3123
Update dtc to fix a UB
...
See https://github.com/dgibson/dtc/pull/65
2021-12-28 17:18:32 -08:00
残页
880b348ce6
Add an old cgroup path
...
Fix topjohnwu#5125
cgroup root path might be mem cgroup instead of acct, especially on low-ram devices.
bc131c3244
%5E%21/#F0
2021-12-28 17:12:15 -08:00
LoveSy
19182ffddf
If dt fstab contains error, fallback to default fstab
...
See https://cs.android.com/android/platform/superproject/+/master:system/core/init/first_stage_mount.cpp;drc=master;l=155
From the source of `FirstStageMount`, dt fstab can fail gracefully and
if any error occurs it will fall back to default fstab. Magisk now
replaces the default fstab and dt fstab unconditionally, bringing potential
errors to the default fstab and causing init fails to load partitions.
2021-12-28 17:10:52 -08:00
topjohnwu
f4ed6274a4
Invert vbmeta header patching config
...
vbmeta header should not be patched in most cases
2021-12-14 04:52:25 -08:00
LoveSy
56eb1a1cf9
Load fstab from system/etc
...
Caused by this commit: e98afa2687
Fix #5057
2021-12-14 03:51:55 -08:00
LoveSy
a7c156a9e3
Further fix oplus.fstab
support
...
* Further fix `oplus.fstab` support
In some oneplus devices, `oplus.fstab` does exists but `init` never
loaded it and those entries in `oplus.fstab` are written directly to
`fstab.qcom`. Previous implementation will introduce duplicate entries
to `fstab.qcom` and brick the device. This commit filters those entries
from `oplus.fstab` that are already in `fstab.qcom` and further filters
duplicated entries in `oplus.fstab` (keep only the last entry).
Fix #5016
* Fix UB
Since we moved entry, we need to explicitly copy its member.
For c++23 we can use `auto{}`.
2021-12-14 03:40:23 -08:00
残页
b5d80a88d1
Only care about mount namespace isolating
2021-12-14 03:08:55 -08:00
LoveSy
87c2f6ad14
xhook_clear after xhook_refresh
2021-12-14 03:06:57 -08:00
topjohnwu
e097c097fe
Rename persist_properties.cpp -> persist.cpp
2021-11-30 01:58:31 -08:00
topjohnwu
1443a5b175
Use mmap_data more widely
2021-11-30 01:50:55 -08:00
topjohnwu
2d82ad93dd
Macro -> template
2021-11-29 19:56:37 -08:00
topjohnwu
0a28dfe1e2
AVB blobs expect to be 4096-byte aligned
2021-11-28 13:21:05 -08:00
topjohnwu
228570640e
Introduce KEEPVBMETAFLAG env variable
...
Close #4447 , close #4906 , close #4901 , close #4964
2021-11-23 22:14:12 -08:00
topjohnwu
65a79610aa
Fix crash and warnings
2021-11-23 18:46:06 -08:00
topjohnwu
24984ea4f2
Optimize stream for full-file writes
2021-11-23 18:08:14 -08:00
topjohnwu
048b2af0fc
Improve zopfli encoder
...
Write in chunks for CLI compression
2021-11-23 16:50:08 -08:00
topjohnwu
449989ddd9
Always use zopfli for zImage compression
2021-11-23 14:24:05 -08:00
topjohnwu
01ebe5724a
Cleanup zImage parsing code
2021-11-23 13:39:15 -08:00
topjohnwu
95fb230b8c
Update to BusyBox 1.34.1
2021-11-22 19:46:52 -08:00
topjohnwu
632971af15
Properly support v4 image headers
2021-11-21 06:07:21 -08:00
topjohnwu
5787aa1078
Stream should always write all bytes
2021-11-21 06:05:59 -08:00
topjohnwu
d8b9265484
Pull out buffer-chunk logic into separate class
2021-11-21 06:05:55 -08:00
topjohnwu
9ea3169ca9
Do not allow modifying page sizes
2021-11-20 22:51:22 -08:00
topjohnwu
aebf2672cd
Fix unpacking vendor boot images
2021-11-20 22:44:38 -08:00
topjohnwu
fef44bd24f
Allow boot scripts to know Zygisk status
2021-11-20 13:05:15 -08:00
topjohnwu
4dfb193d10
Always run non disabled module post-fs-data scripts
2021-11-16 21:29:13 -08:00
vvb2060
d4ac458d17
Ignore zygisk modules when zygisk is not enabled
2021-11-16 21:14:35 -08:00
topjohnwu
e1b63d7dec
Initialize mt19937 statically in function
...
This reduces startup time
2021-11-16 03:20:07 -08:00
topjohnwu
4b5651bd6f
Revert logging after pre specialize
2021-11-16 03:12:01 -08:00
topjohnwu
50515d9128
Close unclosed fds from modules
2021-11-16 01:59:45 -08:00
topjohnwu
6935033db5
Prevent dangling pointers
2021-11-12 02:02:05 -08:00
topjohnwu
421277d730
Prevent race conditions in connect_companion
2021-11-12 01:55:55 -08:00
topjohnwu
56988944b5
No need to dup fd
2021-11-12 01:54:48 -08:00
topjohnwu
528601d25a
Fix integer overflow and workaround seccomp
...
- Use ftruncate64 instead of ftruncate to workaround seccomp
- Cast uint32_t to off64_t before making it negative
Note: Using ftruncate with a modern NDK libc should actually be
fine as the syscall wrapper in bionic will use ftruncate64 internally.
However, since we are using the libc.a from r10e built for Gingerbread,
seccomp wasn't a thing back then, and also the ftruncate64 symbol is
missing; we have to create our own wrapper and call it instead on
32-bit ABIs.
Props to @jnotuo for discovering the overflow bug and seccomp issue
Fix #3703 , close #4915
2021-11-10 03:07:20 -08:00
topjohnwu
b8c1588284
Always unload zygisk after specialize
2021-11-07 13:05:44 -08:00
Chaosmaster
16322ab30c
Use full gzip-signature to find gzip-data.
...
Fall back to raw image if gzip is not found.
Fixes #4849
2021-11-03 22:23:21 -07:00
Chaosmaster
5682917356
Speed up zopfli compression
...
See #4810 for example
2021-11-03 22:22:29 -07:00
LoveSy
c91ccc8b4e
Fix UB on dtb
...
`operator==` of string_view will create a tmp `string_view`.
It's an UB if the `const char *` is a nullptr.
`fdt_get_name` however will return a nullptr.
2021-11-03 22:21:48 -07:00