Commit Graph

5008 Commits

Author SHA1 Message Date
Abhishek Arpure 4a20e8b68f Merge "Integer overflow observed while formatting volume"
am: 846f307c6f

Change-Id: I078b9079eb8f120780df2d38dabb663cef7a306b
2017-09-29 05:32:43 +00:00
Treehugger Robot 846f307c6f Merge "Integer overflow observed while formatting volume" 2017-09-29 05:09:23 +00:00
Tao Bao fdbe272dc0 Merge "roots: volume_for_path() parses and tries prefixes."
am: 3a1587f655

Change-Id: I8dbe9f7f1dca5e1f5d081854435f5ee069bab462
2017-09-28 23:05:35 +00:00
Tao Bao 3a1587f655 Merge "roots: volume_for_path() parses and tries prefixes." 2017-09-28 21:12:53 +00:00
Tao Bao 2dfc1a3898 roots: volume_for_path() parses and tries prefixes.
Commit cc323958f99e40fea06c511656c69c0b2e2d47f7 in system/core has
changed fs_mgr_get_entry_for_mount_point() to do an exact match only,
which breaks the behavior in volume_for_path().

This CL changes the volume_for_path() implementation to parse and pass
prefixes locally. For a given path like "/cache/recovery/last_log", it
will in turn attempt the prefixes of "/cache/recovery/last_log",
"/cache/recovery", "/cache", "/" and return the first hit.

Bug: 63912287
Test: Build and boot into recovery image on bullhead. 'View recovery
      logs' works.
Change-Id: Ic8635b0939649dd5cc9ca501ebc3a2d1fbf5849d
2017-09-27 13:22:17 -07:00
Tianjie Xu 8874d3c309 Merge "Add a new option in recovery menu to test the background texts"
am: 4c7608f3ca

Change-Id: I58dde37fe5c07487956c255b2d588d8505820fe9
2017-09-27 17:45:01 +00:00
Tianjie Xu 4c7608f3ca Merge "Add a new option in recovery menu to test the background texts" 2017-09-27 17:39:05 +00:00
Tianjie Xu 29d5575fa8 Add a new option in recovery menu to test the background texts
Add a new option "Run locale test" to check the background text
images (i.e. texts for "erasing", "error", "no_command" and "installing"
with different locales.)

Use volume up/down button to cycle through all the locales embedded in
the png file, and power button to go back to recovery main menu.

Test: Run locale test with bullhead.
Change-Id: Ib16e119f372110cdb5e611ef497b0f9b9b418f51
2017-09-27 00:27:38 -07:00
Tao Bao fccf3bc0cf Merge "clang-format: Remove the override of PenaltyExcessCharacter."
am: 151f0820ac

Change-Id: I6239cc5a76c39ae6f6e183000f4cab0573183be9
2017-09-27 01:01:34 +00:00
Tao Bao 151f0820ac Merge "clang-format: Remove the override of PenaltyExcessCharacter." 2017-09-27 00:57:55 +00:00
Tianjie Xu eb5e194012 Merge "Output split information for imgdiff when handling large apks"
am: 7f54fe8841

Change-Id: I97ad82d84b16b46e9c0c0f8198d3ab73d43031b0
2017-09-27 00:02:43 +00:00
Tianjie Xu 7f54fe8841 Merge "Output split information for imgdiff when handling large apks" 2017-09-26 23:57:40 +00:00
Tao Bao a1f6980af7 clang-format: Remove the override of PenaltyExcessCharacter.
So it falls back (from 32) to the default value in Google style:
PenaltyExcessCharacter: 1000000

This way it no longer allows lines exceeding the 100-char limit.

const char* x[] = { "long enough so that the line has 101 chars", nullptr };

  would become

const char* x[] = { "long enough so that the line has 101 chars",
                    nullptr };

Test: clang-format the line above.
Change-Id: If578dbdae55d6d81f5e47889890e2afa12b4199a
2017-09-26 15:07:45 -07:00
Tianjie Xu 6a5204ac8d Merge "update the recovery background image with new translation"
am: c0123e0c3a

Change-Id: I071133d52c92b7166df12313c7298621a6718eaa
2017-09-21 22:09:58 +00:00
Tianjie Xu c0123e0c3a Merge "update the recovery background image with new translation" 2017-09-21 22:05:29 +00:00
Tianjie Xu 82582b4562 Output split information for imgdiff when handling large apks
Add a mandatory option in imgdiff to write the split info (i.e.
patch_size, tgt_size, src_ranges) to file when handling large apks.
Therefore, the caller of imgdiff can create split transfers based on
the info.

Bug: 63542719
Test: unit tests pass
Change-Id: I853d55d1f999fd576474faa81077f7307f4d856d
2017-09-21 11:42:16 -07:00
Tianjie Xu 4a47a3e41f update the recovery background image with new translation
Test: recovery manual test && run graphic test under recovery
Change-Id: I2bc514a07a12276f42adb1eec5e208190b4602f2
2017-09-19 23:36:28 -07:00
Mark Salyzyn 9da4179ee6 Merge "recovery: reduce overall boot time"
am: a815d3fb59

Change-Id: I430edd95601b47d09861e289e0de51ff1bc32fdd
2017-09-18 23:44:20 +00:00
Treehugger Robot a815d3fb59 Merge "recovery: reduce overall boot time" 2017-09-18 23:37:59 +00:00
Mark Salyzyn 61744b95d0 recovery: reduce overall boot time
Move recovery-refresh and recovery-persist to onshot exec_background.
synchronous exec commands impact boot time.

Test: none
Bug: 65736247
Change-Id: Ic065c27b21f9bacbadee1e8c07bb15e2c41e0082
2017-09-18 13:55:32 -07:00
Tianjie Xu 2cb1fb45c0 Merge "Fix the dangling pointer when setting up arguments of imgdiff"
am: ca5a071307

Change-Id: I9411f0bce8d96c598db365d0257d4c9893e24104
2017-09-17 21:42:23 +00:00
Tianjie Xu ca5a071307 Merge "Fix the dangling pointer when setting up arguments of imgdiff" 2017-09-17 21:39:09 +00:00
Tao Bao ad878d5494 Merge "Remove EXPAND/STRINGIFY macros."
am: 6e7df82c7b

Change-Id: Id3bf3e77e54c90739cf716029928197c3274632f
2017-09-13 21:40:03 +00:00
Tianjie Xu 8ba7c45e0b Fix the dangling pointer when setting up arguments of imgdiff
Test: unit tests pass
Change-Id: If884e805ccd4df73671ab3436eb90860786ff6c9
2017-09-13 14:05:42 -07:00
Tao Bao 6e7df82c7b Merge "Remove EXPAND/STRINGIFY macros." 2017-09-13 20:53:53 +00:00
Tao Bao bd0ddcd5e8 Remove EXPAND/STRINGIFY macros.
This reverts commit 8be0f39fec to reland
the change that removes EXPAND/STRINGIFY macros.

It's error-prone by putting anything into a string (e.g.
EXPAND(RECOVERY_API_VERSION) would become "RECOVER_API_VERSION" if we
forgot to pass -DRECOVERY_API_VERSION=3).

The initial attempt put RECOVERY_API_VERSION into common.h, which might
be included by device-specific codes but without defining that when
compiling the module. This CL avoids the issue by using a constant
in the header, with a static_assert in recovery.cpp that guards the
consistency.

Test: recovery_component_test
Test: Sideload OTAs on bullhead and sailfish respectively.
Change-Id: I12af3f73392a85554ba703f04970ec9d984ccbaa
2017-09-13 10:51:09 -07:00
Tianjie Xu a11601da9b Merge "Close cmd_pipe properly after updater test finishes"
am: 64307daf5b

Change-Id: Ic384d9de3c559855cfe0bd122adb5e69fa996ad1
2017-09-12 19:47:11 +00:00
Tianjie Xu 64307daf5b Merge "Close cmd_pipe properly after updater test finishes" 2017-09-12 19:14:38 +00:00
Abhishek Arpure 4fec8e9e9a Integer overflow observed while formatting volume
While calculating volume size, get_block_device_size() returns
u64 value but the returned value is assigned in ssize_t variable.
This may cause integer overflow if the volume size is beyond
ssize_t limit.

Use int64_t instead of ssize_t in get_file_size() and explicitly check
for overflow to fix the issue.

Bug: 65001754
Test: mmma bootable/recovery
Change-Id: I91eb30bff0bf7dcc48678efc2f414d2b79af6d0d
2017-09-11 17:13:15 -07:00
Tao Bao 166188c2c6 Merge "ui: Move locale and friends into ScreenRecoveryUI class."
am: fc570c317b

Change-Id: I4e4849c837f11340b3cafdd04e678fd3f7cb4c5d
2017-09-11 21:56:40 +00:00
Tao Bao fc570c317b Merge "ui: Move locale and friends into ScreenRecoveryUI class." 2017-09-11 21:43:03 +00:00
Tianjie Xu 79327ac21d Close cmd_pipe properly after updater test finishes
Otherwise the test may fail after a large number of iterations due to
file open failure.

Bug: 65430057
Test: run recovery_component_test on sailfish for 2000 iterations.
Change-Id: I0d456284d6064467038911d63eade95740cbec2c
2017-09-11 14:38:49 -07:00
Tao Bao d96ce15139 Merge "ui: Remove text_top_."
am: 568644197f

Change-Id: I83872bc318db77036f70bb07baaade12c1b34b6e
2017-09-11 19:26:49 +00:00
Tao Bao efb49add97 ui: Move locale and friends into ScreenRecoveryUI class.
Localized texts only make sense on devices with screens.

Test: Run fake OTA on angler; check the on-screen texts.
Change-Id: I3a644294c8b1f2056cfb78b2d61a598b8ddf2acf
2017-09-11 12:19:32 -07:00
Tao Bao 568644197f Merge "ui: Remove text_top_." 2017-09-11 19:06:12 +00:00
Tao Bao cb94b611cf Merge "ui: Refactor the declaration orders."
am: 79a23b30d2

Change-Id: Icf22068baae034b480333ac358a50c9368ebdc98
2017-09-11 18:20:43 +00:00
Tao Bao 79a23b30d2 Merge "ui: Refactor the declaration orders." 2017-09-11 18:06:24 +00:00
Tao Bao 7577965ba1 ui: Refactor the declaration orders.
By grouping similar kinds together, in an order of types, constants,
ctor/dtor, all other methods and data members.

Also rename ScreenRecoveryUI::density_ to ScreenRecoveryUI::kDensity to
align with others.

Test: mmma bootable/recovery
Change-Id: I1ba2d15c05ba7be8c39762f3d9dadf1fb2130de4
2017-09-10 11:36:54 -07:00
Tao Bao cb5524c23a ui: Remove text_top_.
After the cleanup to WearRecoveryUI, text_top_ now always equals to
((text_row_ + 1) % text_rows_).

Test: Check the recovery UI and 'View recovery logs'.
Change-Id: I69a7f377bbd990db2194f9d3efae257c323c06a8
2017-09-08 23:31:31 -07:00
Tao Bao 5f5ccacef7 Merge "wear_ui: Remove Print()/ShowFile()/PutChar()."
am: fa4f014063

Change-Id: If47ce2f16e839c10ac8447ef69eb40392abeaf00
2017-09-08 21:51:58 +00:00
Tao Bao 4e3e42bed8 Merge "ui: Manage menu_ with std::vector."
am: f51bb0f2d6

Change-Id: I16dfb5ee848cf97ee98626183aef8fdc228c8dae
2017-09-08 21:51:44 +00:00
Tao Bao fa4f014063 Merge "wear_ui: Remove Print()/ShowFile()/PutChar()." 2017-09-08 21:44:40 +00:00
Tao Bao f51bb0f2d6 Merge "ui: Manage menu_ with std::vector." 2017-09-08 21:43:41 +00:00
Tianjie Xu e24e90f403 Merge "Improve imgdiff for large zip files"
am: 9f48641784

Change-Id: I999525af80c5423da275025d977de10399140479
2017-09-08 20:46:47 +00:00
Tianjie Xu 9f48641784 Merge "Improve imgdiff for large zip files" 2017-09-08 20:38:52 +00:00
Tao Bao f05e2bcff2 wear_ui: Remove Print()/ShowFile()/PutChar().
They're mostly identical to the ones in ScreenRecoveryUI, except for the
(legacy) use of 'text_top_'. Because wear_ui.cpp misses the change in
[1] that uses an alternate screen for viewing recovery logs.

Also clean up the included headers.

[1] commit c049163234 ('Add an alternate
screen for viewing recovery logs.').

Test: Build a wearable target recovery; `View recovery logs`.
Change-Id: Ic9208c42a11c037469f5b073ef7d9b721c14d1f3
2017-09-08 12:22:43 -07:00
Tao Bao e15d7a5104 ui: Manage menu_ with std::vector.
Prior to this CL, menu_ is allocated with a fixed length of text_rows_.
However, because we support scrollable menu in wear_ui, there might be
more menu entries than text_rows_, which would lead to out-of-bounds
array access. This CL addresses the issue by switching to std::vector.

Bug: 65416558
Test: Run 'View recovery logs' on angler.
Test: Set large margin height that leaves text_rows less than 21. Then
      run 'View recovery logs' with 21 menu entries.
Change-Id: I5d4e3a0a097039e1104eda7d494c6269053dc894
2017-09-08 10:50:07 -07:00
Tianjie Xu 2903cddb58 Improve imgdiff for large zip files
Due to the cache size limit for OTA generation, we used to split large
zip files linearly into pieces and do bsdiff on them. As a result, i) we
lose the advantage of imgdiff; ii) if there's an accidental order change
of some huge files inside the zip, we'll create an insanely large patch.

This patch splits the src&tgt more smartly based on the zip entry_name.
If the entry_name is empty or no matching source is found for a target
chunk, we'll skip adding its source and later do a bsdiff against the
whole split source image (this rarely happens in our use cases except
for the metadata inside a ziparchive).

After the split, the target pieces are continuous and block aligned,
while the sources pieces are mutually exclusive. (Some of the source
blocks may not be used if there's no matching entry_name in the target.)
Then we will generate patches accordingly between each split image
pairs.

Afterwards, if we apply imgpatch to each pair of split source/target
images and add up the patched result, we can get back the original
target image.

For example:
Input: [src_image, tgt_image]
Split: [src-0,tgt-0; src-1,tgt-1, src-2,tgt-2]
Diff:  [  patch-0;     patch-1;    patch-2]

Patch: [(src-0,patch-0)=tgt-0; (src-1,patch-1)=tgt-1;
(src-2,patch-2)=tgt-2;]
Append: [tgt-0 + tgt-1 + tgt-2 = tgt_image]

Peformance:
For the small package in b/34220646, we decrease the patch size of
chrome.apk dramatically from 30M to 400K due to the order change of
two big .so files.

On two versions of angler, I also observe decent patch size decrease.
For chrome.apk, we reduced the size from 5.9M to 3.2M; and for
vevlet.apk from 8.0M to 6.5M.

Bug: 34220646
Test: recovery component test && apply imgdiff & imgpatch on two
chrome.apk
Change-Id: I145d802984fa805efbbac9d01a2e64d82ef9728b
2017-09-05 15:09:58 -07:00
Tao Bao 0cada4da99 Merge "wear_ui: Remove PrintOnScreenOnly() and PrintV()."
am: 8c753f6253

Change-Id: Iefb74df704f4065ff2e87197cb1a505215c8f384
2017-09-01 22:51:56 +00:00
Tao Bao 8c753f6253 Merge "wear_ui: Remove PrintOnScreenOnly() and PrintV()." 2017-09-01 22:26:31 +00:00