From fd798c51771663dd54b6e24f7b22b70da45e5d0c Mon Sep 17 00:00:00 2001 From: LuK1337 Date: Thu, 5 Jul 2018 13:40:09 +0200 Subject: [PATCH] addonsu: Fix installation on TWRP A/B * These checks need to be added back otherwise it fails to extract files due to 'Too many symbolic links encountered' errors. * Log: Installing su addon... Installing su addon...about to run program [/tmp/mount-system.sh] with 1 args Extracted file "/system/xbin/su" Extracted file "/system/addon.d/51-addonsu.sh" failed to create dir for /system/etc/init/superuser.rc script aborted: set_metadata: Error on lstat of "/system/etc/init/superuser.rc": Too many symbolic links encountered set_metadata: Error on lstat of "/system/etc/init/superuser.rc": Too many symbolic links encounterederror: 25 cause: 111 Updater process ended with ERROR: 7 Change-Id: Ibf5082756063f7e703cbc47cf9642677983874ac --- addonsu/updater-script-install | 18 +++++++++++++----- addonsu/updater-script-remove | 15 +++++++++++---- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/addonsu/updater-script-install b/addonsu/updater-script-install index c807739f..6a9d655d 100644 --- a/addonsu/updater-script-install +++ b/addonsu/updater-script-install @@ -6,11 +6,19 @@ set_metadata("/tmp/mount-system.sh", "uid", 0, "gid", 0, "mode", 0755); set_metadata("/tmp/unmount-system.sh", "uid", 0, "gid", 0, "mode", 0755); run_program("/tmp/mount-system.sh") == 0 || abort("Could not mount /system"); -package_extract_dir("system", "/system"); -set_metadata("/system/addon.d/51-addonsu.sh", "uid", 0, "gid", 0, "mode", 0755, "selabel", "u:object_r:system_file:s0"); -set_metadata("/system/etc/init/superuser.rc", "uid", 0, "gid", 0, "mode", 0644, "selabel", "u:object_r:system_file:s0"); -set_metadata("/system/xbin/su", "uid", 0, "gid", 2000, "mode", 0755, "selabel", "u:object_r:su_exec:s0"); -symlink("/system/xbin/su", "/system/bin/su"); +if getprop("ro.build.system_root_image") != "true" then + package_extract_dir("system", "/system"); + set_metadata("/system/addon.d/51-addonsu.sh", "uid", 0, "gid", 0, "mode", 0755, "selabel", "u:object_r:system_file:s0"); + set_metadata("/system/etc/init/superuser.rc", "uid", 0, "gid", 0, "mode", 0644, "selabel", "u:object_r:system_file:s0"); + set_metadata("/system/xbin/su", "uid", 0, "gid", 2000, "mode", 0755, "selabel", "u:object_r:su_exec:s0"); + symlink("/system/xbin/su", "/system/bin/su"); +else + package_extract_dir("system", "/system/system"); + set_metadata("/system/system/addon.d/51-addonsu.sh", "uid", 0, "gid", 0, "mode", 0755, "selabel", "u:object_r:system_file:s0"); + set_metadata("/system/system/etc/init/superuser.rc", "uid", 0, "gid", 0, "mode", 0644, "selabel", "u:object_r:system_file:s0"); + set_metadata("/system/system/xbin/su", "uid", 0, "gid", 2000, "mode", 0755, "selabel", "u:object_r:su_exec:s0"); + symlink("/system/xbin/su", "/system/system/bin/su"); +endif; run_program("/tmp/unmount-system.sh") == 0 || ui_print("Could not unmount /system"); ui_print("Done"); diff --git a/addonsu/updater-script-remove b/addonsu/updater-script-remove index ba4fcaa8..bd753a35 100644 --- a/addonsu/updater-script-remove +++ b/addonsu/updater-script-remove @@ -6,10 +6,17 @@ set_metadata("/tmp/mount-system.sh", "uid", 0, "gid", 0, "mode", 0755); set_metadata("/tmp/unmount-system.sh", "uid", 0, "gid", 0, "mode", 0755); run_program("/tmp/mount-system.sh") == 0 || abort("Could not mount /system"); -delete("/system/addon.d/51-addonsu.sh"); -delete("/system/bin/su"); -delete("/system/etc/init/superuser.rc"); -delete("/system/xbin/su"); +if getprop("ro.build.system_root_image") != "true" then + delete("/system/addon.d/51-addonsu.sh"); + delete("/system/bin/su"); + delete("/system/etc/init/superuser.rc"); + delete("/system/xbin/su"); +else + delete("/system/system/addon.d/51-addonsu.sh"); + delete("/system/system/bin/su"); + delete("/system/system/etc/init/superuser.rc"); + delete("/system/system/xbin/su"); +endif; run_program("/tmp/unmount-system.sh") == 0 || ui_print("Could not unmount /system"); ui_print("Done");