1. 27 Nov, 2017 1 commit
  2. 17 Jun, 2017 1 commit
    • bigbiff bigbiff's avatar
      twrpDigest refactor · 56cf5646
      bigbiff bigbiff authored
      This patch is to refactor twrpDigest using polymorphism
      and inheritance to use the same call patterns for creating and
      reading a digest. Now a library.
      Use SHA2 from libcrypto. SHA2 is default if device has libcrypto.
      
      Change string MD5 everywhere to use digest or Digest instead. Updated
      string tags to digest. Translation will be required.
      
      Switch out digest code into a driver class from partitionmanager.
      
      SHA2 is better for digest creation due to decreased collision space
      compared to MD5 and SHA1.
      
      See https://en.wikipedia.org/wiki/SHA-2
      
      Change-Id: I74b5546789990b12aa4ce2e389d25f80a3fe213f
      56cf5646
  3. 23 Apr, 2017 1 commit
    • bigbiff bigbiff's avatar
      ADB Backup: fix adb restore issues · b5ecaad2
      bigbiff bigbiff authored
      Set Backup_FileName on adb backup to fix restore.
      Set read_from_adb after EOF to return properly
      from newer adb client prompt.
      Create setter and getter for Backup_FileName
      for openrecoveryscript.cpp which is not a
      friend class.
      Fix condition for twrpTar::Get_Size() and adb backup.
      Change-Id: I7eb8168fa3416366b996e220cecbc0e1bcec5e8e
      b5ecaad2
  4. 08 Feb, 2017 1 commit
  5. 13 Dec, 2016 2 commits
  6. 30 Nov, 2016 3 commits
    • Ethan Yonker's avatar
      Improve backup & wipe exclusion handling · 3fdcda46
      Ethan Yonker authored
      Rename twrpDU.* to exclude.*
      Remove global variable for du and replace with partition specific
      variables.
      Use separate exclusion lists for backups and wiping.
      Clean up some includes
      Fix some parenthesis in twrp.cpp that I messed up.
      
      Note: twrpTarMain command line utility compiles but probably does
      not work correctly yet due to not properly setting part_settings
      
      Change-Id: Idec9c3e6a8782ba53f3420fa79ba33394f4f85fb
      3fdcda46
    • James Christopher Adduono's avatar
      MD5 verification sanity · 79ae093c
      James Christopher Adduono authored
      We can use switches and enums to make things more understandable
      and work with results in a more sensible manner.
      
      PS2: Move file MD5 verification and error handling into
           a separate function to reduce code.
      
      PS3: Default to false in Check_Restore_File_MD5 function
      
      Change-Id: Id3ee0bb444cf13be67bb5dec2c43f7c26a86b954
      (cherry picked from commit 5c3950716e5c7c6279efd5f3f338d6d22e5215e2)
      79ae093c
    • Ethan Yonker's avatar
      Fix image flashing · e080c1f8
      Ethan Yonker authored
      PS2: full_filename is not a dir
      
      PS3: use a consistent format of always assuming directory
           is missing the trailing / + fix whitespace alignment
      
      Change-Id: Ib963473ae10571b3d069b326d024ca04c7224dda
      (cherry picked from commit fa4ff144374474c541351d153549ad11d4396614)
      e080c1f8
  7. 13 Sep, 2016 1 commit
    • Ethan Yonker's avatar
      Clean up PartitionSettings · dcf2b674
      Ethan Yonker authored
      The PartitionSettings struct contains some data elements that are duplicates
      of data elements in the TWPartition class that is contained within the
      PartitionsSettings.Part element. We will eliminate this duplication to help
      reduce the chances for programming bugs.
      
      Specifically, this fixes problems where the current file system does not
      match the backed up file system.
      
      Change-Id: I02f236e72093362050556a2e53a09d1dbb9a269d
      dcf2b674
  8. 31 Aug, 2016 1 commit
  9. 22 Aug, 2016 1 commit
    • Kjell Braden's avatar
      wait for cryptfs device node to come up · 3126a113
      Kjell Braden authored
      this is to prevent a race condition to occur when mounting an adopted
      storage volume just after it was decrypted. After setting up the
      decrypted volume using cryptfs_setup_ext_volume(), Decrypt_Adopted()
      immediately calls Mount(), which will call Check_FS_Type(), which will
      fail in blkid_new_probe_from_filename, as the device node was not
      created yet.
      
      Change-Id: Ic5a274c2066ab278c9b7f1c8b83b820e552ca344
      3126a113
  10. 09 Aug, 2016 1 commit
  11. 01 Aug, 2016 1 commit
    • bigbiff's avatar
      ADB: Add adb backup for TWRP. · ce8f83c4
      bigbiff authored
      Functionality for client side to backup
      tar and image streams over adbd to the client under backup.ab.
      
      Using adb backup on the client side you can backup the partitions
      TWRP knows about.
      
      On the client side you can do the following:
      adb backup -f <filename> --twrp <options> where options are
      --compress: compress data
      system: backup system
      cache: backup cache
      data: backup data
      boot: backup boot
      etc for each partition.
      
      You can string multiple options,
      i.e. adb backup -f <filename> --twrp --compress cache system data
      
      adb backup in TWRP will take any option corresponding
      to TWRP fstab partitions, e.g. efs boot as well.
      
      If you do not specify the filename with the -f option,
      adb will backup your data to a filename backup.ab on the client.
      You can then rename the file and encrypt it with desktop tools.
      
      If you don't want to use command line arguments:
      adb backup --twrp
      
      will bring up the gui and allow you to choose partitions
      from the backup page.
      
      To restore the backup use the following convention:
      adb restore <filename>
      
      Structures are used to store metadata in binary inside
      of the file itself. If the metadata structure is modified,
      update the adb version so that it will invalidate older
      backups and not cause issues on restore. When restoring,
      we currently do not support picking specific partitions.
      It's all or nothing.
      
      Change-Id: Idb92c37fc9801dc8d89ed2a4570e9d12e76facf8
      ce8f83c4
  12. 03 May, 2016 4 commits
    • Matt Mower's avatar
      Wait to mount until after fstab processed · 72c87ce3
      Matt Mower authored
      The necessity to process fstab twice stems from mounting partitions
      while still processing. Instead, wait to finish setup of /data, /cache
      and storage parameters until after fstab has been processed (once).
      
      Change-Id: Id77e1edbab5eb68a7cd4a1f34953d819a043d47a
      72c87ce3
    • Matt Mower's avatar
      Remove char/string conversions in fstab processing · 2b2dd15c
      Matt Mower authored
      There a few char->string conversions between functions which handle
      different parts of fstab line processing, but there are no uses of
      string functions. Pass char arrays/pointers around instead.
      
      Change-Id: I976a9a54ee8dcfb6194cadcac6a34e467602003b
      2b2dd15c
    • Matt Mower's avatar
      Rewrite FS fstab flag processing · 4ab42b18
      Matt Mower authored
      * If 'ro' fsflag detected, set Mount_Read_Only = true
      * Only output human readable Mount_Options to log
      * Match fsflags identically (not just first n chars) since there are
        no fs_flags which take arguments
      * Match new processing method introduced in TW fstab flag processing
      
      Change-Id: Iefdb76016be90a131b0d627d0cd3f18d2eb1a008
      4ab42b18
    • Matt Mower's avatar
      Rewrite TWRP fstab flag processing · 2416a50b
      Matt Mower authored
      * Do not flip/flop between std::string and char* when no std::string
        specific functions are applied.
      * Remove the need to manually count flag string lengths
      * Move checks for Display_Name, Storage_Name, and Backup_Display_Name
        out of flag processing
      
      Change-Id: I24d432c222124012b2a98d27598e42d0944f7da2
      2416a50b
  13. 31 Mar, 2016 1 commit
    • Ethan Yonker's avatar
      Improve progress bar handling for backup / restore / image flash · 472f5068
      Ethan Yonker authored
      The progress bar will now be updated during image backups, restores
      and during image flashing (except for sparse images which will require
      significant changes to libsparse, and except for mtd nand using
      flash_utils).
      
      The progress bar will now be updated mid-file for file systems (tar) so
      the user will see changes even during large file backup / restore.
      
      Add a new progress tracking class to simplify handling of progress bar
      updates. The class will only update the progress bar 5 times a second to
      reduce the CPU load from updating the GUI frequently which does affect
      backup times.
      
      Change-Id: Iff382faef3df1f86604af336c1a8ce8993cd12c5
      472f5068
  14. 29 Mar, 2016 1 commit
    • James Christopher Adduono's avatar
      Allow restoring to read-only file system · d6f94acc
      James Christopher Adduono authored
      This allows the restoration of firmware or modems on read-only
      mounted file systems. If the user is able to make a backup of
      these partitions, it would only make sense they be allowed to
      restore that backup. The current handling is dangerous in that
      it happily wipes, but refuses to restore. :)
      
      Note that it would be preferable to use the backup=emmc flag
      instead in most cases, added by change:
      https://gerrit.omnirom.org/#/c/17183
      
      Change-Id: I32d47c8928dee61595c15a9db16d3c5b9a6d7183
      d6f94acc
  15. 18 Feb, 2016 1 commit
  16. 29 Jan, 2016 1 commit
    • Ethan Yonker's avatar
      Replace fix permissions with fix contexts for emulated storage · b5fab76b
      Ethan Yonker authored
      Fix permissions rarely fixed anything on more recent versions of
      Android and usually made things worse. Instead we will replace it
      with a more dumbed down option that should fix contexts on
      /data/media with a few improvements to ensure that contexts get
      fixed for multiple users and on adopted storage.
      
      Change-Id: If5523781936a0b04196e2ad871cae767ebae2583
      b5fab76b
  17. 25 Jan, 2016 1 commit
    • Ethan Yonker's avatar
      Adopted Storage support · 66a1949d
      Ethan Yonker authored
       -Detects, decrypts, and mounts an adopted SD card if a
        secondary block device is defined (usually mmcblk1)
       -Handles unified storage
       -Displays the adopted storage in MTP along with internal
       -Factory Reset - wiped just like a data media device, we
        retain the keys folder and the storage.xml during a
        factory reset
       -Backup / Restore
       -Disable mass storage when adopted storage is present
       -Read storage nickname from storage.xml and apply it to
        display names in the GUI
       -Read storage.xml and determine what storage location is in
        use for /sdcard and remap accordingly
      
      libgpt_twrp is source code mostly kanged from an efimanager
      project. It is GPL v2 or higher, so we will opt for GPL v3.
      
      Change-Id: Ieda0030bec5155ba8d2b9167dc0016cebbf39d55
      66a1949d
  18. 04 Jan, 2016 1 commit
  19. 19 Dec, 2015 2 commits
    • Ethan Yonker's avatar
      Use ioctl to get block device size · d18a821e
      Ethan Yonker authored
      AMLogic based device uses paths like /dev/block/recovery and the
      stock init binary either deletes or does not create mmcblk0p12
      which breaks TWRP because TWRP cannot match up the path / name.
      The ioctl method is probably more reliable anyway and certainly
      should be faster.
      
      Change-Id: I73f981dcec637cdf5b189bdefa00ea15b924b500
      d18a821e
    • Ethan Yonker's avatar
      Multiple Language Support · 74db157b
      Ethan Yonker authored
      This is similar to https://gerrit.omnirom.org/#/c/14014
      
      A lot of the features built in the older patch set have been split
      out into separate patches, most of which have already been merged.
      The remaining functionality here should all be directly related to
      language selection and loading. We always load English as a base
      before loading other languages over the top of the base. The idea
      is that if another language is missing a translation, then we will
      still display the English.
      
      Maybe still to do: read the /cache/recovery/last_locale file and
      load a language based on that. For me, this file contains just:
      en_US
      We probably won't bother with region specific translations so we
      would have to look at either trimming off the _US or using some
      other method like perhaps a symlink or a combination of the two.
      
      Thanks to _that for twmsg.cpp class
      
      Change-Id: I9647a22e47883a3ddd2de1da51f64aab7c328f74
      74db157b
  20. 26 Nov, 2015 2 commits
    • Ketut Putu Kumajaya's avatar
      Fix broken fsflags support · bfb72b06
      Ketut Putu Kumajaya authored
      Process_FS_Flags Flags parameter is just a copy not a reference,
      not get updated, Mount_Flags always 0 - fix it now.
      
      Thanks to SHM @ XDA-Developers
      
      Change-Id: Ib044db905febfedefee493cfc04fd1cad6f61f8e
      bfb72b06
    • Matt Mower's avatar
      Update dosfstools · 18794c82
      Matt Mower authored
      * Version 3.0.28
      * Update filenames in source
      * Remove unnecessary symlink to fsck
      * Commit "Recode short filenames from DOS codepage (default 437)." has
        been reverted since we do not have access to iconv
      * Commits cherry-picked on top of 3.0.28:
          - mkfs.fat: fix incorrect int type
          - Prevent out of bound array read in date_dos2unix()
      
      Change-Id: I50310235c62ec2e6bc90afcd10f2814d3afb5113
      18794c82
  21. 14 Jul, 2015 1 commit
    • Ethan Yonker's avatar
      Add ntfs-3g support · b81d9051
      Ethan Yonker authored
      Add support for mounting ntfs via ntfs-3g and support for wiping
      and repairing ntfs partitions.
      
      Change-Id: I82dc4626f459bb93b86eb9ebba64ad3a6560781b
      b81d9051
  22. 28 May, 2015 1 commit
    • Ethan Yonker's avatar
      Add resize2fs and ability to run resize2fs via GUI · a2719156
      Ethan Yonker authored
      Note: Only works on ext2/3/4 partitions. Only tested on ext4.
      
      We can use this in some cases to resize the data partition if an
      incorrect fstab caused recovery to not reserve the 16KB for a
      crypto footer.
      
      Sometimes the BoardConfig for a custom ROM does not have the
      correct size for the system partition and if the ROM flashes a
      raw system image, that image will not take up the full block
      device. Running resize2fs can fix the size and may allow more
      room in the system partition for customizations like busybox or
      a larger gapps package.
      
      Sometimes flashing a factory image may flash userdata with an
      image with a file system that does not take up the full size of
      the block device (e.g. factory images for the Nexus 6 will flash
      userdata with a ~24GB userdata image, wasting ~30GB of space).
      Using resize2fs we can easily fix this issue without having to do
      a full format data.
      
      Change-Id: I631f5c6f567bbc6a9241e5dd95f1e435820a1b13
      a2719156
  23. 27 May, 2015 1 commit
    • Ethan Yonker's avatar
      Mount system as read-only by default · eb32b1ff
      Ethan Yonker authored
      Mounting system as rw can prevent future OTA updates. The purpose
      of this patch set is to prevent TWRP from mounting sytem as rw on
      the first boot. Device maintainers should update their twrp.fstab
      files on these devices to include an additional line:
      /system_image emmc /dev/block/../system
      
      This line will allow TWRP to create a raw system image backup to
      ensure that the user can return to an original state for future
      OTA updates.
      
      Change-Id: I8929d85bc3a5b96cc564bc7f734b58d5612ec833
      eb32b1ff
  24. 23 Feb, 2015 1 commit
  25. 02 Feb, 2015 1 commit
    • Ethan Yonker's avatar
      MTP: make MTP work even if unplugged and replugged · 1b03920c
      Ethan Yonker authored
      Set up a loop to keep trying to open / read the MTP device so that
      MTP will work even if the device is unplugged during boot or
      unplugged and replugged in.
      
      Change-Id: I0d3a3b7c91ce84a8cbed16caa4b15efee35b3641
      1b03920c
  26. 27 Jan, 2015 1 commit
    • bigbiff's avatar
      Add cancel backup capability. · 7abc5fe1
      bigbiff authored
      This will stop the iteration of the partition objects, kill the
      current twrpTar thread and remove the backup directory.
      
      Implement TWAtomicInt class to give us a wrapper that automatically
      uses mutexes before the read and write to help ensure that the
      reads and writes will be atomic based on documentation.
      
      Change-Id: I645b22bc980a292e9c7202acb24ffd22ebe68c63
      7abc5fe1
  27. 09 Jan, 2015 1 commit
    • Ethan Yonker's avatar
      Allow flashing of images via the GUI · 96af84a4
      Ethan Yonker authored
      - Use the Images... button in the lower right of the zip install
        page
      - Unify image flashing functions between restore and image flash
      - boot and recovery partitions are flashable by default
      - use fstab flag flashimg=1 or 0 to override defaults
      - file system partitions are currently not flashable
      
      Change-Id: I822dc446030543c55d2153e219d67a1292374ffc
      96af84a4
  28. 19 Dec, 2014 1 commit
    • Ethan Yonker's avatar
      MTP add/remove storage instead of disabling MTP · 726a0206
      Ethan Yonker authored
      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
      726a0206
  29. 04 Dec, 2014 2 commits
    • bigbiff's avatar
      add function to partition.cpp to return max file size to mtp responder · 7cb4c332
      bigbiff authored
      Change-Id: If8114b5eac741db6c512fb35cb48e3825c2ff098
      7cb4c332
    • Ethan Yonker's avatar
      Reduce libs needed for decrypt and clean up old decypt files · 253368a0
      Ethan Yonker authored
      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
      253368a0
  30. 04 Nov, 2014 1 commit
  31. 08 Oct, 2014 1 commit
    • that's avatar
      mtp: cleanup, fixes and performance improvements · 9e0593ea
      that authored
      - use std::map instead of linked list
      - read directories on demand
      - fix writing zip files to storage root
      - fix creating directories
      - lots of minor fixes
      - simplify generation of storage IDs and make them spec compliant
      
      Change-Id: I2137c27549ddbdc58466f2e3aeda464fac70a3c5
      9e0593ea