Commit Graph

1670 Commits

Author SHA1 Message Date
Ethan Yonker d83c9ea371 Fix GUIAction::operation_start
We need to set the value of tw_operation_state a little sooner to
make the decrypt page work correctly. Without this change, decrypt
would incorrectly display the main page during the first decrypt
cycle. This fix may also fix ORS and possibly other things that
use the runPage function.

Change-Id: I85ad6e4add6726a2746eeb7116f3eab3f7ff5d84
2015-01-02 21:23:22 -06:00
Ethan Yonker df7abac1a6 Do not toggle USB ID during MTP startup if not needed
In most cases MTP is enabled so it is better to start our init.rc
with MTP enabled and try not to toggle USB IDs during TWRP boot so
that we can keep adb running to make debugging easier.

Change-Id: Idf122c5ad4deeef7e1ed775d495989c502ddfb19
2015-01-02 10:22:58 -06:00
that 6bea38acdf gui: remove dead build flag TWRP_SIMULATE_ACTIONS
isn't used by the code, can be set via datamanager instead.

Change-Id: I3d98c85c91ce41f32de90345715f2f456f628419
2015-01-01 10:56:52 +01:00
that 3f7b1aced8 gui: Move action functions to function pointer map.
This allows the functions to be more readable and make
doActions readable.

Patch set 5: gui: remove threading in GUIAction

Multiple actions were started in another thread that was joined
immediately after starting it, so the input thread was blocked anyway.

Selected single actions were started in their own thread, but this
caused bugs like being able to install the same package twice in
parallel by quickly swiping the slider twice.

Change-Id: I28adadaedd032efc7bff3aaa48e659627aa3a3b3
2014-12-30 11:30:13 +01:00
that fcdb76dd05 twrp-functions: remove unused functions
Change-Id: I3d072be9ef28f21ade466bc4c42caca8848f7c2a
2014-12-29 17:11:59 +01:00
that a1ad19f0b7 mtp: get rid of string streams, reduces binary size a bit
Change-Id: Iaa91eaac8269f02783c904d890641861ec747d11
2014-12-29 17:10:38 +01:00
Ethan Yonker abb5c4ead0 Move sleep during MTP startup to MTP thread
Some devices are very slow to respond to the sysfs requests. To
prevent delaying the main GUI from booting during TWRP startup, we
move the sleep delay to just before we open the MTP device and
into the MTP thread so that it does not hold up the main TWRP
thread.

Change-Id: Ic931ef317d0fb7ef4dfdef46a32f68a014ff62c0
2014-12-29 17:01:41 +01:00
that c1f5c0f7fd gui: fix DEVICE_RESOLUTION warnings in Android.mk
Indenting the warnings with tab resulted in a make error
"*** commands commence before first target.  Stop."
instead of the intended message. Using spaces instead.

Also fixed the web link to point to the current build guide on XDA
instead of the outdated one on rootzwiki.

Change-Id: I8b25d39edae16dbc479c0e36bd11e12b49b4fbb0
2014-12-29 17:00:50 +01:00
Ethan Yonker 4bfabab005 Check for valid MTP_Storage_ID before adding or removing
Attempting to add a storage ID of 0 was causing a seg fault.

Change-Id: If8797186405be36ee70dbca63bd1063a62ba2812
2014-12-29 16:25:32 +01:00
Ethan Yonker f9f99bcb62 Ingore SIGPIPE errors
If MTP exits unexpectedly, sending messages to add or remove a
storage device via Add_Remove_MTP_Storage was causing a crash.
Ignoring SIGPIPE allows us to more gracefully handle the error
instead of a total crash of TWRP.

Change-Id: I0a3f770f8b0f4bdbe10aa0ba857209b22b8668f7
2014-12-29 16:25:00 +01:00
Ethan Yonker ee8b314dbc Improve MTPServer logging of read errors
Unless MTP debug logging is enabled, you will miss the error and
will not know that something went wrong in the log.

Change-Id: I51f4758b415eb38e808ec8b1c9788b505bf88c65
2014-12-29 09:24:23 -06:00
Ethan Yonker 32f68a3c92 Add TW_IGNORE_MT_POSITION_0 touch flag
This fixes touch on the a11 when fastboot booting the image. We
are also adding event logging for ABS_MT_POSITION data which we
should have been logging before but for some reason we did not.

Change-Id: I1b38c31c716efdcbe48db4faa5d0cef97c91c58e
2014-12-29 16:21:57 +01:00
Ethan Yonker dc3223adb2 toolbox_recovery should always include setenforce
init does not follow symlinks and we need setenforce to be able
to set permissive. toolbox_recovery will now always include the
setenforce tool even if busybox has it so that our provided
init.rc can run /sbin/toolbox setenforce 0 successfully. The
symlink for setenforce will remain pointing to busybox if busybox
has setenforce.

Change-Id: I88a2a99bbed30cef3443ac5d94665e3850872237
2014-12-22 14:48:05 -06:00
Ethan Yonker f5c904b2ff 2.8.3.0
Change-Id: If2084a8c8815b079db6b6a6b45ea180ba1282092
2014-12-21 21:56:51 -06:00
Ethan Yonker 960f030b41 Fix twrpTar building
- ifdef around set_metadata
- Set tags as optional

Change-Id: I438e370c3bf6b590dc80ba372724c47cead6cbe5
2014-12-22 04:55:24 +01:00
bigbiff 0c53203efe Fix else if and maxFileSize initializer.
Change-Id: Iac7852a4fb2add5744d5ea424d6ad5a82828f102
2014-12-22 04:52:56 +01:00
that a3d31fbe38 fixPermissions: simplify code, fix bugs
- avoid parsing permission strings
- fix memory leaks, a fix new/free mismatch and a compiler warning
- fix that only first updated-package was processed
- fix a potential stack overflow if packages.xml is huge
- minor refactoring for reducing duplicated code
- don't process packages without codePath
- fix path for deleting app data (currently unused anyway)
- fix file ownership on libs
- try not to mess up Android 5.0 app permissions

Patch set 4

- make fixing SELinux contexts an option with a check box
- add some notes / text to the themes

Patch set 6

- decouple "fix permissions" from "fix contexts"

Change-Id: Icc77ecc581befc5ce6e419b1f3b8ca189208c234
2014-12-22 04:52:37 +01:00
Ethan Yonker d79d9bceb3 Allow non datamedia devices to wipe encryption
With 5.0 L, we decrypt automatically if the default_password is
used. Non datamedia devices do not get the format data button so
they cannot wipe encryption off the device. This patch add a wipe
encryption button where the format data button would normally be
located on the Wipe page.

This patch also attempts to remove / delete the dm-crypt block
device before formatting.

Change-Id: I100d5d154d6c49254fd48e23279df973db5f23ae
2014-12-21 23:30:17 +01:00
Ethan Yonker 726a020632 MTP add/remove storage instead of disabling MTP
Implement a pipe between TWRP and MTP to allow TWRP to tell MTP
to remove storage partitions as they become unavailable (e.g.
during a wipe, unmount, etc) instead of disabling MTP completely.
This includes some fixes and improvements in destructors to
properly remove / delete various items. This also means that we
will not be toggling adb off and on quite as often.

I do not like that we had to add another thread, but we were
unable to use select() on the mtp_usb character device because
this device does not support polling. Select always returned
indicating that the mtp file descriptor was ready to be read and
the resulting read would block. The read block prevented us from
being able to include reading of the pipe between TWRP and MTP in
the main MTP thread.

We might want to add a return pipe letting TWRP know if the
removal of the storage device was successful, but I am not sure
how we want to implement this. It would invovle timeouts in both
TWRP and MTP to ensure that we returned a failure indicator in a
timely manner to TWRP and prevent deleting the storage device in
the case of a failure. Right now we make no attempt to ensure that
an MTP operation is underway like a large file transfer, but we
were not doing anything like this in the past. In some respects we
have limited control over what happens. If the user installs a
zip that unmounts a storage partition, we will not know about the
change in storage status anyway. Regular Android does not have
these troubles because partitions rarely get unmounted like in
recovery. At some point, we have to hold the user accountable for
performing actions that may remove a storage partition while they
are using MTP anyway.

Ideally we do not want to toggle the USB IDs and thus toggle adb
off and on during early boot, but I am not sure what the best way
to handle that at this time.

Change-Id: I9343e5396bf6023d3b994de1bf01ed91d129bc14
2014-12-19 16:27:34 -06:00
Ethan Yonker 6cb35aab99 Recovery init.rc setenforce 0 to make SELinux permissive
This will only work if the sepolicy is changed by also applying:
https://gerrit.omnirom.org/10924
Otherwise the sepolicy will deny the request.

Change-Id: I8a52cdfdd38bda19aa89686ff0ad31b90e1aa3b7
2014-12-19 16:28:30 +01:00
Ethan Yonker b7896268ed Fix include paths in crypto
Change-Id: Ia9fd0cd75bd6ee6e14909890cb18a8edb3b22267
2014-12-18 15:30:31 -06:00
Ethan Yonker 5216bef553 Toggle MTP during ADB sideload
Windows does not do very well if you try to sideload while MTP is
enabled due to drivers. This will toggle MTP off and back on if
MTP is currently enabled before and after a sideload operation.

Change-Id: I022dbedecc97565b50b6ae1fda8922b822f63440
2014-12-18 21:18:15 +01:00
Ethan Yonker e3e8829e40 Update SuperSU to 2.40
The SuperSU install process is getting rather complicated, so we
will modify the install script slightly and use it to install
all the things and stop trying to check to see if root permissions
have been lost like we used to do.

Change-Id: Ibdb64c909d2bd16e12bb35b4f31f572cc29add47
2014-12-18 21:17:26 +01:00
Ethan Yonker fb7a2dad7d Fix adb sideload page on 1440x2560 layout
Change-Id: If79086b0128e57087fd87f07d56984eb2a15d8b2
2014-12-18 21:16:54 +01:00
Kra1o5 0024e3826b Add support for custom kernel headers
Change-Id: I39fe4de8919e59dd75e8cb535fa0648948035c26
2014-12-17 11:47:33 +01:00
Dees Troy 87da424556 Fixes for compiling crypto in older trees
Some of these fixes needed to be made anyway. Note that older
trees will still need to have files / repos copied into them from
newer trees. Namely we need:
system/security/softkeymaster
hardware/libhardware/include/hardware/keymaster.h

Maybe others as I did not document very carefully what I was
pulling in.

Change-Id: I465fd1fbe228803ec02fba047b151f07ea13d5ca
2014-12-12 18:50:11 +00:00
Ethan Yonker 2d11d498ca Fix compiling of dosfstools for arm64
Change-Id: If99d0be4b73cdeb388c6cb1b35a215d3b8b3b58d
2014-12-12 11:43:21 -06:00
Ethan Yonker 619a721a30 Improve resource error logging
Actually display the name of the item or the filename of the item
that we were unable to load in the log to make it easier to
determine what went wrong.

Change-Id: I027b35aab286e4d0f1957bcfb28ed40d81f9bbb2
2014-12-12 17:10:20 +01:00
Ethan Yonker 4b94cfd391 Attempt to set the proper uid/gid/contexts on new files and dirs
Files and folders that we create during backups, copy log, or MTP
operations often do not have the proper uid/gid/contexts assigned.
We will attempt to read the proper contexts from the settings
storage path and assign those same contexts to any files or dirs
that we create.

Change-Id: I769f9479854122b49b499de2175e6e2d026f8afd
2014-12-12 09:20:42 -06:00
Ethan Yonker ac21cb5ae3 Fix loading of png images in custom themes
Change-Id: I7eebc474c025eda534adb04d061795623ebecdda
2014-12-12 15:21:52 +01:00
Matt Mower b6ef4781d2 Revert "Fix USB Mass Storage on some devices"
This reverts commit 9eb1cd4752.

Change-Id: I66d3d6bb5633e6df3e8f7db250fc6d62817a5489
2014-12-12 15:21:28 +01:00
Dees Troy b47f28b05a Fix generating symlinks for older trees
Symlinks for unpigz, toolbox, and busybox were not generating in
older trees.

Change-Id: I3ca2a2047510954e66fb3cf49eef6af713d3268e
2014-12-12 15:20:55 +01:00
Ethan Yonker 452e420a2e EPOLLWAKEUP handling in minui/events.c
Older trees may not have EPOLLWAKEUP defined so we will work
around the lack of EPOLLWAKEUP support as best we can. This should
only maybe affect how charger handles waking up the screen in off
mode charging in older trees. No impact on TWRP itself.

Change-Id: Ia72ebfc12778b2bcda648edc27d2092c2ead415c
2014-12-12 15:20:35 +01:00
bigbiff d5c6069287 This fixes kernel panic on find7 when disabling MTP before flashing zips.
Change-Id: Id11a0fb1a88424d9dd70190c313781607bad3bb8
2014-12-11 18:48:08 -05:00
bigbiff b38de7e2f4 make header layout more readable for 1440x2560
Change-Id: I109c7ae5963b5b4d9d1a8190e364a7685c41dbdd
2014-12-10 19:05:09 +01:00
Ethan Yonker 0bc17c6fd3 Fix occasional MTP kernel panic
Add a short sleep between setting up the sysfs entries for MTP and
actually sending MTP data to the MTP device. In some cases a
kernel panic was happening because we were sending data too soon.

Change-Id: Ie5e05690846fc84f161c91829de448bc049f87e2
2014-12-10 18:55:35 +01:00
Ethan Yonker 738be7a3ff Use one mizip for all
The new minzip did not compile in older trees due to needing
mmap64. For older trees we will just use mmap instead. Remove all
files and code pertaining to minzipold. Updater should now build
properly in older trees as well.

Eliminate use of PLATFORM_VERSION in favor of PLATFORM_SDK_VERSION
which should be more consistent and reliable.

Change-Id: I38d2b604a73d1b17a2072c7d60e990b81ece0c10
2014-12-10 11:54:02 -06:00
that ceb7b8e576 crypto: fix build in < 5.0 tree
Change-Id: Ie4ed3e91cfb7e509bac1d6db885bd3f415d2b168
2014-12-10 17:22:09 +01:00
Matt Mower 201727911f Fix mkexfatfs exclusion when TW_NO_EXFAT enabled
Push to android-5.0

Conflicts:
	Android.mk

Change-Id: I0b831a4e6e52e4b314751035b750e6a398cb4d2d
2014-12-10 16:40:43 +01:00
soyu d5a7c0edf1 add support unicode font not only ascii
need to define custom theme(include custom ttf files)
  in device tree :

  TW_CUSTOM_THEME := device/xxxx/yyyy/recovery/res

  For example:
  https://github.com/twrp/android_device_xiaomi_armani

Change-Id: I6bebdfbdd75c99bfe216a8c0789af63c6fe4b9de
2014-12-09 21:14:48 +01:00
Ethan Yonker 38c2ff8e90 Include libext2_quota.so if present for e2fsprogs utilities
Needed starting in 5.0 lollipop for e2fsck, mke2fs, and tune2fs
binaries.

Change-Id: Ie76517df4690f6407cb63d0607c6c0c8a77975e5
2014-12-09 13:42:18 -06:00
Ethan Yonker 8a59459479 Update minui to work properly
minui is not used by TWRP but it is included in AOSP recovery
source and healthd (formerly charger) uses minui for displaying
the battery charging animation during off-mode charging.

This patch fixes / updates minui to use updated code to load png
files into memory.

Change-Id: I706d10d66de95886396d866e80615b1fb905d201
2014-12-09 13:30:48 -06:00
Ethan Yonker c56ab4c72d Fix slidervalue not showing up in some cases
The button vibration slider was not showing up on portrat layouts.
This commit fixes that issue and maybe some other issues.

Change-Id: Ia0c0ed319358db3b99887b3b37aa7737c7caf0cc
2014-12-08 22:16:57 -06:00
Ethan Yonker 448c8dc4c1 Fix png graphics load / display on AArch64
This is mostly kang from AOSP resources.c for loading png files
into RAM, but for ease of compatibility we retained the older
gr_surface data types throughout and ensured that we retain
support for alpha blended png files.

Change-Id: Ieea552173d3bfe885460407be73088bbad75663f
2014-12-09 04:46:00 +01:00
Ethan Yonker 76084ebd74 Remove new images from AOSP
TWRP does not use these images.

Change-Id: I48be648232826aabc14f9674862de7b0b981b988
2014-12-09 04:44:55 +01:00
Ethan Yonker 1902c79d11 Use linker64 on AArch64
Patch Set 3: Combine into one sed - by bigbiff

Change-Id: Ice3147fae76575f6e09c7df201bcd3f949aa24ea
2014-12-09 04:32:34 +01:00
bigbiff 7cb4c3322b add function to partition.cpp to return max file size to mtp responder
Change-Id: If8114b5eac741db6c512fb35cb48e3825c2ff098
2014-12-04 17:32:27 +01:00
Ethan Yonker 253368a072 Reduce libs needed for decrypt and clean up old decypt files
Trim cryptfs.c to remove functions that TWRP does not use for
decrypt and remove the need for libfs_mgr from cryptfs.c by
passing some items to cryptfs.c from the partition manager.

Add support for new fstab flags:
encryptable and forceencrypt=/path/to/cryptokey
For example:
flags=forceencrypt=/dev/block/platform/sdhci-tegra.3/by-name/MD1
Note that "footer" is the default, so you do not need to set this
flag on devices that use the footer for the crypto key.
Also add mounttodecrypt if you need to mount a partition during
the decrypt cycle for firmware of proprietary libs.

Clean up decrypt and only support one version

Android 5.0 lollipop decrypt should be backwards compatible with
older versions so we will only support one version, 1.3 that came
with 5.0 lollipop.

Remove support for Samsung TouchWiz decrypt. It does not work with
the latest versions of Samsung encryption anyway and it has not
been updated to work with any AOSP decryption higher than 1.1

Change-Id: I2d9c6e31df50268c91ee642c2fa090f901d9d5c9
2014-12-04 17:30:16 +01:00
erikcas 1db013bf28 bootable recovery: we upgraded to 5.0.1
Change-Id: I9e2f359dd7274e1ae885f6a3b392d5ab5ca99ac9
2014-12-03 16:05:35 +01:00
Ethan Yonker 75bf041a8a Make the android-5.0 branch compile in 4.4 to 4.1
Migrate previous minzip to minzipold replacing the existing
minzipold. This will break compatibility with trees that do not
support selinux (ICS and older). Migrate former verifier files to
verifierold.

Add fuse.h to recovery source because older trees do not have it.

Add LOCAL_MODULE_TAGS where needed for 4.1 tree.

Change-Id: Iade57cb2b0115af7fce9f56aa98636b1744a1ef4
2014-12-02 10:34:15 -06:00