Commit Graph

7326 Commits

Author SHA1 Message Date
vvb2060 ff18cb8e70 su: support drop capabilities 2025-07-03 02:42:08 -07:00
topjohnwu 37a9724a54 Apply clippy fix 2025-07-02 21:20:14 -07:00
topjohnwu d660401063 Treat magisk symlinks differently 2025-07-02 21:20:14 -07:00
topjohnwu 88541d6f49 Fix file attribute copy in module mounting logic
Due to various reasons, we cannot directly mount module files in /data
into the real paths. Instead we bind mount the module root directory and
remount this mirror with specific mount-point flags. Relevant to this
bug, the module mount is mounted as read-only, which means the file
attribute copy operation could fail in certain configurations.

The fix here is to always copy file attributes into writable locations,
so either in the tmpfs worker directory, or in the module directory
under /data.

A new test case is added to make sure this regression will no longer
happen again in the future.

Fix #9139
2025-07-02 19:23:46 -07:00
topjohnwu ecd6129fe5 Add systemless hosts test 2025-07-02 19:23:46 -07:00
topjohnwu 6dfe9df9e2 Run cargo fmt 2025-07-02 19:23:46 -07:00
topjohnwu e81de7ec36 Release Magisk v30.0
[skip ci]
v30.0
2025-07-01 10:14:43 -07:00
topjohnwu c78da1ce24 Update v30.0 changelog 2025-07-01 10:00:38 -07:00
Wang Han 7b2d40987c Refactor magisk bins injection logic
Magisk binary mounting logic is not very clear now. In this commit, it
is rewritten in a more robust way. Now it has following cases in mind:
1) Device has a su binary, magisk need to overlay it
2) Choose the PATH with least files to reduce bind mount
3) Filter path which is not suitable
2025-07-01 02:16:16 -07:00
Wang Han 3a37e8c9c5 Don't clone attributes for magisk symlinks
This avoids use existing attributes for su, which will obviously break
magisk functions.
2025-07-01 02:16:16 -07:00
igor 58b405bce1 Update portuguese/english translation 2025-07-01 01:32:36 -07:00
Wang Han 810174ef73 Ignore set_context() error if magisktmp is /sbin
recreate_sbin() will bind mount original files in /sbin to tmpfs /sbin,
so we have no choice but just log here to let the loop continue.
2025-06-30 17:39:54 -07:00
topjohnwu 690a5ac033 Update to ONDK r28.5 2025-06-30 12:15:43 -07:00
topjohnwu 89aad31f7e Update gradle dependencies 2025-06-26 09:35:18 -07:00
topjohnwu 7124db98e3 Stop involving JSON in release script 2025-06-20 00:59:38 -07:00
topjohnwu 0860e859f7 Stop updating README for each release 2025-06-20 00:32:11 -07:00
topjohnwu 04008949b8 Deprecate canary channel 2025-06-20 00:22:17 -07:00
Wang Han 39f2940bd1 Skip symlink in restore_tmpcon()
If magisktmp is /sbin, there may exist files which is symlink to files in
root dir. As root is RO, setcontext will fail and break iterating loop.
2025-06-16 11:09:33 -07:00
topjohnwu 1460317ebd Cleanup C++ headers 2025-06-16 02:25:38 -07:00
topjohnwu 12340c9bd5 Update gradle version 2025-06-16 02:17:29 -07:00
topjohnwu c4590fe2ba Reorganize buildSrc 2025-06-10 16:51:31 -07:00
topjohnwu b36066bbcd Run clippy fix 2025-06-10 16:34:38 -07:00
topjohnwu 65d1c5827c Update dependencies 2025-06-10 16:33:06 -07:00
AshiVered 1d675c8b2e Update strings.xml
Improve Hebrew translations
2025-06-06 17:08:51 -07:00
Wang Han 0b494ed7df Avoid throwing error if chmod a symlink
It is possible that we want to clone attributes of a regular file to a
symlink. In this case, we don't need to error out if chmod fails. Just
skip it.
2025-06-06 17:08:34 -07:00
topjohnwu 48d9fc24eb Update release.sh 2025-06-05 11:00:27 -07:00
topjohnwu 83426f7f36 Update check update logic 2025-06-04 12:50:19 -07:00
Wang Han 0e86d4dbcb Fix file pointer leak on error path 2025-06-03 00:34:52 -07:00
Wang Han 5e050d7456 Check binary existence before injecting zygisk bins 2025-06-03 00:33:40 -07:00
topjohnwu 898580bf90 Update dependencies 2025-06-02 19:51:12 -07:00
topjohnwu 86621a4c46 Fix gradle cache 2025-05-30 11:11:53 -07:00
topjohnwu a834e72b71 Use sccache for clippy 2025-05-30 11:11:45 -07:00
topjohnwu d8cf42af16 Reduce unstable feature usage 2025-05-30 11:11:36 -07:00
topjohnwu 8c79d66b7b Update ONDK r28.4 2025-05-30 01:53:26 -07:00
Wang Han fada8b148a Ensure manager can always bypass su access policy
This fixes https://github.com/topjohnwu/Magisk/issues/9050.
2025-05-21 16:14:46 -07:00
topjohnwu dc0acea47c Remove C++ I/O streams 2025-05-20 03:26:00 -07:00
topjohnwu 78d1200608 Migrate all compression code to Rust 2025-05-20 03:26:00 -07:00
topjohnwu 527bbc0368 Migrate module mounting to Rust 2025-05-20 03:24:43 -07:00
topjohnwu 4c89c7e2b3 Directly use MagiskJson 2025-05-19 10:40:58 -07:00
topjohnwu adbea7e313 Improve update check code 2025-05-19 10:23:15 -07:00
vvb2060 76962f965e app: use github api to check updates 2025-05-19 10:23:15 -07:00
topjohnwu a4b8c5e46b Update app dependencies 2025-05-18 22:24:44 -07:00
The Ali Dev 83c707439c Add Urdu Translation 2025-05-18 22:21:05 -07:00
Radoš Milićev 25dd6121f4 Add author for Serbian translations to .xml files 2025-05-18 21:54:24 -07:00
Radoš Milićev 67f35ad027 Add Serbian latin (values-b+sr+Latn) 2025-05-18 21:54:24 -07:00
topjohnwu 0c4b8afbc5 Simplify JNI hooking code 2025-05-17 02:05:21 -07:00
topjohnwu 34b30d7ce1 Promite Magisk v29.0 to stable 2025-05-16 12:17:53 -07:00
topjohnwu 2215088973 Remove unused files in native directory 2025-05-15 13:48:12 -07:00
topjohnwu 8b7fb6cdde Improve scripts 2025-05-15 02:56:36 -07:00
topjohnwu 94c7dbedf2 Fix signing config
[skip ci]
2025-05-14 15:14:34 -07:00