summaryrefslogtreecommitdiffstats
path: root/tests (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Call libvintf to verify package compatibility.Tao Bao2017-04-191-0/+3
| | | | | | | | | | | | The libvintf API has landed. Hook up to do the actual verification. Bug: 36597505 Test: recovery_component_test Test: m recoveryimage; adb sideload on angler and sailfish, with packages that contain dummy compatibility entries. Test: m recoveryimage; adb sideload on angler and sailfish, with packages that don't contain any compatibility entries. Change-Id: Idbd6f5aaef605ca51b20e667505d686de5ac781f
* Add tests for update_binary_command().Tao Bao2017-04-192-0/+92
| | | | | | | | | | | | | | | | | Expose update_binary_command() through private/install.h for testing purpose. Also make minor clean-ups to install.cpp: a) adding more verbose logging on ExtractToMemory failures; b) update_binary_command() taking std::string instead of const char*; c) moving a few macro and global constants into update_binary_command(). Bug: 37300957 Test: recovery_component_test on marlin Test: Build new recovery and adb sideload on angler and sailfish. Change-Id: Ib2d9068af3fee038f01c90940ccaeb0a7da374fc Merged-In: Ib2d9068af3fee038f01c90940ccaeb0a7da374fc (cherry picked from commit bc4b1fe4c4305ebf0fbfc891b9b508c14b5c8ef8)
* Verify the package compatibility with libvintf.Tao Bao2017-04-122-1/+59
| | | | | | | | | | | | | | | verify_package_compatibility() is added to parse the compatibility entry (compatibility.zip) in a given OTA package. If entry is present, the information is sent to libvintf to check the compatibility. This CL doesn't actually call libvintf, since the API there is not available yet. Bug: 36597505 Test: Doesn't break the install with existing packages (i.e. w/o the compatibility entry). Test: recovery_component_test Change-Id: I3903ffa5f6ba33a5c0d761602ade6290c6752596
* Merge "Add the missing sr-Latn into png files and rename the png locale header" am: 713d915636 am: dc235b5ab9Tianjie Xu2017-03-291-10/+11
| | | | | | | am: 5ec12126f0 Change-Id: Ia6b861c91958d3be23a4a7456d6d5d8e4a1607c8 (cherry picked from commit 9166f66eee883d6d6cc280a6c355e5528bb4a3f0)
* tests: Construct signature-boundary.zip at runtime.Tao Bao2017-03-272-2/+18
| | | | | | Test: Observe the same failure with recovery_component_test ("signature start: 65535 is larger than comment size: 0"). Change-Id: I98c357b5df2fa4caa9d8eed63af2e945ed99f18a
* Merge "applypatch: Drop the support for patching non-EMMC targets." am: b4c4f8c494 am: 351f69e64aTao Bao2017-03-261-124/+0
|\ | | | | | | | | | | am: dcbabd5932 Change-Id: Ia8ff537f0c503fec5602ae6ad6677c8b427d0806
| * Merge "applypatch: Drop the support for patching non-EMMC targets."Tao Bao2017-03-261-124/+0
| |\
| | * applypatch: Drop the support for patching non-EMMC targets.Tao Bao2017-03-161-124/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patching regular files is used in file-based OTA only, which has become obsolete. Bug: 35853185 Test: Apply an incremental that patches the boot.img. Test: /system/bin/install-recovery.sh works. Test: recovery_component_test passes. Change-Id: Id44e42c4bc63f2162ecc8a6df1cb528b7ae6b0a9
* | | Merge "updater: Fix the broken case for apply_patch_check()." am: 9f2062657d am: 923d41ccd5Tao Bao2017-03-231-0/+49
|\| | | | | | | | | | | | | | | | | am: 47ee8fa42a Change-Id: I24a2b7776779a61f786fae0cbe5dd9569250ff7b
| * | updater: Fix the broken case for apply_patch_check().Tao Bao2017-03-231-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's valid to provide only 1 argument to apply_patch_check(). We shouldn't fail the argument parsing. Bug: 36541737 Test: recovery_component_test passes. Test: recovery_component_test captures the failure without the fix. Test: The previously failed update applies successfully. Change-Id: Iee4c54ed33b877fc4885945b085341ec5c64f663
* | | Merge "Remove malloc in edify functions" am: 1ea869b0c6 am: 137d85333eTianjie Xu2017-03-232-3/+5
|\| | | | | | | | | | | | | | | | | am: eb0623b14b Change-Id: I7c48105d9259b1713e8be5fb2c50ef8d6a92c993
| * | Remove malloc in edify functionsTianjie Xu2017-03-222-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | And switch them to std::vector & std::unique_ptr Bug: 32117870 Test: recovery tests passed on sailfish Change-Id: I5a45951c4bdf895be311d6d760e52e7a1b0798c3
* | | Merge "Refactor asn1_decoder functions into a class." am: ea3d0b923d am: d7846b7303Tao Bao2017-03-221-217/+180
|\| | | | | | | | | | | | | | | | | am: 6e30101834 Change-Id: I4ac855fe7b33e4b1141c601045ecf79a681c60cf
| * | Refactor asn1_decoder functions into a class.Tao Bao2017-03-211-217/+180
| | | | | | | | | | | | | | | | | | | | | Test: mmma bootable/recovery Test: recovery_unit_test passes. Test: recovery_component_test passes. Change-Id: If0bf25993158eaebeedff55ba4f4dd0f6e5f937d
* | | Merge "verify_file: Add constness to a few addresses." am: 5b2bf90e13 am: 43bd2c8414Tao Bao2017-03-211-14/+14
|\| | | | | | | | | | | | | | | | | am: 1c456cd3a5 Change-Id: I6d423a2fe19727e0d41b083a4020be30ae9400fb
| * | verify_file: Add constness to a few addresses.Tao Bao2017-03-211-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should not touch any data while verifying packages (or parsing the in-memory ASN.1 structures). Test: mmma bootable/recovery Test: recovery_component_test passes. Test: recovery_unit_test passes. Change-Id: Ie990662c6451ec066a1807b3081c9296afbdb0bf
* | | Merge "Add testcases for load_keys()." am: 110102f37e am: 43f5ad6e90Tao Bao2017-03-201-0/+57
|\| | | | | | | | | | | | | | | | | am: 60ea643afb Change-Id: I2246094d0db184726cae34d7b916c127512ad6d2
| * | Merge "Add testcases for load_keys()."Tao Bao2017-03-201-0/+57
| |\ \
| | * | Add testcases for load_keys().Tao Bao2017-03-181-0/+57
| | | | | | | | | | | | | | | | | | | | Test: recovery_component_test passes. Change-Id: I6276b59981c87c50736d69d4af7647c8ed892965
* | | | Merge "Remove the dead #include's in verifier.cpp." am: 64d25024b9 am: b2617e882eTao Bao2017-03-201-1/+0
|\| | | | | | | | | | | | | | | | | | | | | | | am: cc3f3c3d1c Change-Id: Ib78b586044938d9ec41cabfb07e8a274cc7d4d73
| * | | Remove the dead #include's in verifier.cpp.Tao Bao2017-03-181-1/+0
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | A follow-up to commit 5e535014dd7961fbf812abeaa27f3339775031f1. Also clean up Android.mk, since libverifier no longer needs anything from libminui. Test: mmma bootable/recovery Test: recovery_component_test passes. Change-Id: I1c11e4bbeef67ca34a2054debf1f5b280d509217
| * | Merge "Drop the dependency on 'ui' in verify_file()."Tao Bao2017-03-181-104/+45
| |\ \
| | * | Drop the dependency on 'ui' in verify_file().Tao Bao2017-03-171-104/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | verify_file() has a dependency on the global variable of 'ui' for posting the verification progress, which requires the users of libverifier to provide a UI instance. This CL adds an optional argument to verify_file() so that it can post the progress through the provided callback function. As a result, we can drop the MockUI class in verifier_test.cpp. Test: recovery_component_test passes. Test: verify_file() posts progress update when installing an OTA. Change-Id: I8b87d0f0d99777ea755d33d6dbbe2b6d44243bf1
* | | | Merge "Drop the dependency on 'ui' in verify_file()."Tao Bao2017-03-181-105/+46
|\ \ \ \
| * | | | Drop the dependency on 'ui' in verify_file().Tao Bao2017-03-171-105/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | verify_file() has a dependency on the global variable of 'ui' for posting the verification progress, which requires the users of libverifier to provide a UI instance. This CL adds an optional argument to verify_file() so that it can post the progress through the provided callback function. As a result, we can drop the MockUI class in verifier_test.cpp. Test: recovery_component_test passes. Test: verify_file() posts progress update when installing an OTA. Change-Id: I8b87d0f0d99777ea755d33d6dbbe2b6d44243bf1 (cherry picked from commit 5e535014dd7961fbf812abeaa27f3339775031f1)
* | | | | Merge "Add a test to perform block_image_update" am: 881b08ecd2 am: 5c06706d51Tianjie Xu2017-03-172-6/+123
|\ \ \ \ \ | | |/ / / | |/| | | | | | | | | | | | | | | | | | am: 640fc1d338 Change-Id: If611a8023bb5411ac2a1063411d0030121ce0de2
| * | | | Merge "Add a test to perform block_image_update"Tianjie Xu2017-03-172-6/+123
| |\ \ \ \ | | |_|/ / | |/| | |
| | * | | Add a test to perform block_image_updateTianjie Xu2017-03-172-6/+123
| | | |/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the following tests: stash src bspatch stashed_src tgt free stashed_src (expected a successful update) stash src free stashed_src fail_the_update (expected stashed_src freed) Bug: 36242722 Test: Test identified unfreed stashes correctly. Change-Id: I5a136e8dc31774367972fbfe8c63cbc1ddb3a113
* | | | Merge "More cleanup to imgdiff & imgpatch" am: 3541934ff5 am: 91f8574061Tianjie Xu2017-03-171-4/+5
|\| | | | |_|/ |/| | | | | | | | | | | am: dda128abbf Change-Id: I4369d91759d40a1fb261766fb5b1e6aa0ecb36c4
| * | More cleanup to imgdiff & imgpatchTianjie Xu2017-03-161-4/+5
| |/ | | | | | | | | | | | | | | Also remove the utils in applypatch and replace them with the corresponding libbase functions. Test: recovery tests pass. Change-Id: I77254c141bd3e7d3d6894c23b60e866009516f81
* | Merge "updater: Remove some obsoleted functions for file-based OTA." am: 342717d148 am: 000f364c19Tao Bao2017-03-141-113/+0
|\| | | | | | | | | | | am: 1fc6e95672 Change-Id: I3e01f0bbcbe9233b2c0ed8088fc3cf1781a4baf3
| * updater: Remove some obsoleted functions for file-based OTA.Tao Bao2017-03-131-113/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This CL removes the updater support for delete(), symlink(), rename(), set_metadata() and set_metadata_recursive(). Such functions have been removed from the generation script in commit f388104eaacd05cfa075d6478369e1d0df5ddbf3 (platform/build). Note: This CL also removes delete_recursive() which seems to have never been supported in generation script. Bug: 35853185 Test: recovery_component_test passes. Change-Id: I51e1ec946fa73761118fa1eaa082423df6d588e9
* | Merge "recovery: replacing fs_mgr_read_fstab() with new fs_mgr APIs" am: 7a0dfec771 am: 1a23257214Bowgo Tsai2017-03-101-12/+5
|\| | | | | | | | | | | am: 1a76f4a3bc Change-Id: I8869ddf69589c2a1bb0e8dd493df67f9126db585
| * recovery: replacing fs_mgr_read_fstab() with new fs_mgr APIsBowgo Tsai2017-03-101-12/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The fstab settings of early-mounted partitions (e.g., /vendor) will be in kernel device tree. Switch to the new API to get the whole settings with those in device tree: fs_mgr_read_fstab_with_dt("/etc/recovery.fstab") The original default /fstab.{ro.hardware} might be moved to /vendor/etc/. or /odm/etc/. Use another new API to get the default fstab instead of using the hard-coded /fstab.{ro.hardware}. This API also includes the settings from device tree: fs_mgr_read_fstab_default() Bug: 35811655 Test: boot sailfish recovery Change-Id: Iaa56ac7f7b4c4dfc7180c65f03e9a37b94f1de09
* | Merge "Refractor the code for imgdiff" am: a2e7a07031 am: 68571e27d8Tianjie Xu2017-03-072-0/+57
|\| | | | | | | | | | | am: 36ee8dd262 Change-Id: I8ce462fa0d6c9ea601e1e3d3c9386cc3fcaa7972
| * Merge "Refractor the code for imgdiff"Treehugger Robot2017-03-072-0/+57
| |\
| | * Refractor the code for imgdiffTianjie Xu2017-03-072-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Put ImageChunk and some helper functions into a class. Also switch to using std::vector instead of malloc. Bug: 18606652 Test: imgdiff_test passed on host. Also generate a complete incremental OTA package. The file content is the same and time consumption is similar. Change-Id: Id603ada4e130ef521218400761a119001a86ca79
* | | Merge "Fix an error on bootloadermessager test teardown" am: b694ba8aab am: 536989892cTianjie Xu2017-03-031-2/+4
|\| | | | | | | | | | | | | | | | | am: b2dfc0182a Change-Id: Ie4ee06310e7ea9c36e5323f4990f71f2f8fb771e
| * | Merge "Fix an error on bootloadermessager test teardown"Tianjie Xu2017-03-031-2/+4
| |\ \
| | * | Fix an error on bootloadermessager test teardownTianjie Xu2017-03-031-2/+4
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | The test should not clear bcb during teardown on devices without /misc. Bug: 35712836 Test: The test tears down without errors after /misc removed from the fstab. Change-Id: I42df89feb18fac5a435cd17eef97a6bad0f44545
* | | Merge "Recovery Test: add SideloadTest to test FUSE support on target" am: 53feebea4f am: 3d605c54e3Wei Wang2017-03-032-0/+22
|\| | | | | | | | | | | | | | | | | am: 685391c5e9 Change-Id: I656a9c7f1e4880bb00e7aaad7f9e55104a7096a7
| * | Recovery Test: add SideloadTest to test FUSE support on targetWei Wang2017-03-032-0/+22
| |/ | | | | | | | | | | | | | | | | | | FUSE FS is required in recovery sideload functionalites. This CL is to add a native test to flag when FUSE is not supported in the device kernel. Bug: 35768196 Test: mma, run recovery_component_test on marlin and pass all Change-Id: I43b6dbee658010df56ba4d4b0e91baa7fd1c4480
* | Merge "Skip BootloaderMessageTest, UncryptTest for devices without /misc" am: 0f26468eda am: 5cce91a95aTianjie Xu2017-03-013-3/+111
|\| | | | | | | | | | | am: 6b0959a6bb Change-Id: I1dc478edd656d4a20b4b886570d8ff822fe5e29e
| * Skip BootloaderMessageTest, UncryptTest for devices without /miscTianjie Xu2017-03-013-3/+111
| | | | | | | | | | | | | | | | Skip these two tests if /misc partition is not found in fstab. Bug: 35712836 Test: Both test skip correctly if there's no /misc in fstab.${hardware}. Change-Id: I38417a8677030229a335e43eaef85ae70c4e0845
* | Merge "Use bspatch from external/bsdiff." am: f9962dbfe2 am: 2c467f6e49 am: 6f06890343Sen Jiang2017-02-161-0/+2
|\| | | | | | | | | | | am: 05087fb83d Change-Id: Ifafcedf27aa9394a307fca854c491891191cce04
| * Use bspatch from external/bsdiff.Sen Jiang2017-02-021-0/+2
| | | | | | | | | | | | | | | | | | | | Now ApplyBSDiffPatch() will stream the output to sink as we go instead of sinking everything at the end. Test: recovery_host_test Bug: 26982501 Change-Id: I05b6ed40d45e4b1b19ae72784cf705b731b976e3
* | Merge "Remove '_static' suffix from libext2* references." am: 56ff8061b1 am: 5b5b8333e0 am: 9518d34c0fAlex Deymo2017-01-261-1/+1
|\| | | | | | | | | | | am: ade61afd29 Change-Id: I8e5a22261264f0fd5506e9916a37e1af20261645
| * Remove '_static' suffix from libext2* references.Alex Deymo2017-01-241-1/+1
| | | | | | | | | | | | Bug: 34220783 Test: make checkbuild Change-Id: Iceea20e440a4bb6a3b254486a65a86401a2241ef
* | Merge "Add checkers and tests for empty locale in PNG file" am: 69e73ab7a9 am: a38224eadb am: 18098b7de3Tianjie Xu2017-01-193-2/+167
|\| | | | | | | | | | | am: 98cf72d3aa Change-Id: I1fb6b0898d347ca1187241e495fe28b260c6d905
| * Add checkers and tests for empty locale in PNG fileTianjie Xu2017-01-193-2/+167
| | | | | | | | | | | | | | | | | | | | | | match_locale() will return false for empty locale string in the PNG file. Also add a manual test to validate if a PNG file is qualified to use under recovery. Bug: 34054052 Test: recovery_manual_test catches invalid PNG files successfully & Locale_test passed Change-Id: Id7e2136e1d8abf20da15825aa7901effbced8b03
* | Remove "_static" suffix from libsparse am: 67f3aa8804 am: 204369ef1a am: 9e93a79f4cAlex Deymo2017-01-121-1/+1
|\| | | | | | | | | | | am: 3cbb199e24 Change-Id: Ia2447e399bd979402b535e8d7228ab0dad106d78
| * Remove "_static" suffix from libsparseAlex Deymo2017-01-111-1/+1
| | | | | | | | | | | | Bug: 34220783 Change-Id: I358f931f0b29f5bd526e1475180e477e2e90b936
* | Remove "_static" suffix from libext4_utils. am: 31653660ad am: 4b54093899 am: 9edd655f94Alex Deymo2017-01-121-1/+1
|\| | | | | | | | | | | am: 68b7f08b96 Change-Id: Ia98ed0b8e0d50c2256dcacb1a5240e98c68f4adb
| * Remove "_static" suffix from libext4_utils.Alex Deymo2017-01-111-1/+1
| | | | | | | | | | Bug: 34220783 Change-Id: I34ccc3b11da0d1b48805967ad75b9ddade569930
* | Merge "tests: Add testcase for show_progress() and set_progress()." am: 478a5ec9c7 am: 179fc8a82b am: ba0dad8828Tao Bao2017-01-061-0/+50
|\| | | | | | | | | | | am: 485b94f14d Change-Id: I437572556bcbf8110a8d6d7ea00442675297822e
| * tests: Add testcase for show_progress() and set_progress().Tao Bao2017-01-061-0/+50
| | | | | | | | | | Test: recovery_component_test passes. Change-Id: I4f00d0171cf86699e9ce747d07d7d44a01906e81
* | Merge "imgdiff: Fix an edge case that leads to infinite loop." am: 3b828d879b am: 4d37763c69 am: e513c0f2acTao Bao2017-01-041-0/+80
|\| | | | | | | | | | | am: bcde135fce Change-Id: I91af040f28085b4ab07fe191bee03b50c4c3ffce
| * Merge "imgdiff: Fix an edge case that leads to infinite loop."Tao Bao2017-01-041-0/+80
| |\
| | * imgdiff: Fix an edge case that leads to infinite loop.Tao Bao2016-12-281-0/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | When the input image ends with the magic value sequence of 0x1f, 0x8b, 0x0b (optionally with 0x00), the image parsing code will be stuck in an infinite loop. Test: recovery_component_test passes. Change-Id: Ie3629dfdc41360387b19cc3e0359c95ae4fb998e
* | | Merge "recovery: Fix the broken UI text." am: 56fc8fa376 am: 1227f6b841 am: 3806993e25Tao Bao2017-01-041-32/+38
|\| | | | | | | | | | | | | | | | | am: 74e0ecb25b Change-Id: If03ce22edaee2cf9aa38f3ea90ee992cd06695c3
| * | recovery: Fix the broken UI text.Tao Bao2017-01-041-32/+38
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | UI text is broken (doesn't show any text during FDR) due to commit d530449e54bd327e9c26209ffa0490c6508afe6c, which reordered the calls to RecoveryUI::SetLocale() and RecoveryUI::Init(). Because Init() uses the locale info to load the localized texts (from images), the locale must be set prior to that via SetLocale(). This CL refactors Init() to take the locale parameter, and removes the odd SetLocale() API. Bug: 34029338 Test: 'Run graphics test' under recovery. Change-Id: I620394a3d4e3705e9af5a1f6299285d143ae1b01
* | Merge "Add tests for imgdiff." am: 344c8eb453 am: 4fe022c4ed am: 4e2471d6ddTao Bao2016-12-282-0/+477
|\| | | | | | | | | | | am: e6c1d578bd Change-Id: If99c2af21db684d3874649144f0d1ff780474616
| * Merge "Add tests for imgdiff."Tao Bao2016-12-282-0/+477
| |\
| | * Add tests for imgdiff.Tao Bao2016-12-202-0/+477
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Factor out libimgdiff static library for testing purpose. This CL adds the imgdiff tests on host and on target both (similar to libimgpatch). In practice, we only need imgdiff binary on host, and libimgpatch on target. But they should build and pass tests on both platforms. Test: recovery_host_test passes; recovery_component_test passes. Change-Id: I0eafb7faf727cdf70066310e845af6ee245d4f60
* | | Merge "tests: Add test coverage for DirUtil." am: f24d2a6b39 am: 1b83e7e28d am: 7f0f49dd2bTao Bao2016-12-232-0/+151
|\| | | | | | | | | | | | | | | | | am: f9d1e205eb Change-Id: I2ad7e507c25edeba24e80a3d74f3f3d7352e76c5
| * | tests: Add test coverage for DirUtil.Tao Bao2016-12-222-0/+151
| | | | | | | | | | | | | | | Test: recovery_unit_test passes. Change-Id: I764c56404c7ccdd57ae5486c946fbc9ac6ae7bc9
* | | Merge "tests: Replace the O_RDONLY in access(2)." am: 3b9645288e am: baf422229d am: ef801f9a62Tao Bao2016-12-222-8/+16
|\| | | | | | | | | | | | | | | | | am: 5a108b6e00 Change-Id: Ieae405488b3426364626be481ad2f5a5de5e4618
| * | Merge "tests: Replace the O_RDONLY in access(2)."Tao Bao2016-12-222-8/+16
| |\ \
| | * | tests: Replace the O_RDONLY in access(2).Tao Bao2016-12-222-8/+16
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Although O_RDONLY gives the same value as F_OK (0), it's not the right friend of access(2). Also clean up the temporary files from ZipTest (TemporaryDir doesn't like non-empty directory). Test: recovery_unit_test passes and has no leftover. Change-Id: I66b90e43c0954c89ce08b36b9e2b4e84183b28f5
* | | Merge "tests: Add testcase for ZipUtil." am: aa305e9ce8 am: 6df1c4579e am: 830ab1c482Tao Bao2016-12-222-1/+193
|\| | | | | | | | | | | | | | | | | am: 7720e1ab48 Change-Id: Ia09ba6d6b82a088142a964b8223bb2576d78604c
| * | tests: Add testcase for ZipUtil.Tao Bao2016-12-222-1/+193
| |/ | | | | | | | | Test: recovery_unit_test passes. Change-Id: I8ad364e88aaee31579ed7206aad8e5620518d797
* / Add a checker for signature boundary in verifierTianjie Xu2016-12-172-1/+2
|/ | | | | | | | | | | | | | The 'signature_start' variable marks the location of the signature from the end of a zip archive. And a boundary check is missing where 'signature_start' should be within the EOCD comment field. This causes problems when sideloading a malicious package. Also add a corresponding test. Bug: 31914369 Test: Verification fails correctly when sideloading recovery_test.zip on angler. Change-Id: I6ea96bf04dac5d8d4d6719e678d504f957b4d5c1
* Add update_bootloader_message() to fix two-step OTAs.Tao Bao2016-12-151-0/+26
| | | | | | | | | | | | | | | | | This is a retry of commit 7e31f421a514da09b90e46dbd642a5e9b16e0003. Commit bd56f1590c967205dc45eb2ec298aa8d2aacb740 switches to calling write_bootloader_message(<options>) in get_args(), which unintentionally resets the stage field thus breaks two-step OTAs. This CL adds update_bootloader_message(<options>), which only sets the command field (to "boot-recovery") and the recovery field (with the specified options). Bug: 33534933 Test: Apply a two-step package. Test: recovery_component_test passes. Change-Id: Ie0b1ed4053d2d3c97d9cb84310d616b28fcfc72e
* Merge "tests: Add tests for bootloader_message."Tao Bao2016-12-152-0/+140
|\
| * tests: Add tests for bootloader_message.Tao Bao2016-12-152-0/+140
| | | | | | | | | | Test: recovery_component_test passes. Change-Id: Ib9aa2ffd6b018546223c76b7424f4ba355f5b088
* | Merge "Add a stub recovery UI."Sen Jiang2016-12-141-1/+1
|\ \ | |/ |/|
| * Add a stub recovery UI.Sen Jiang2016-12-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | This allows recovery to work on devices without screen. The stub recovery UI does nothing except print to stdout. Test: write 'recovery\n--wipe_data\n--reason=wipe_data_from_ota\n' to misc and boot to recovery on a device without screen. Bug: 33175036 Change-Id: Icde698aa2e2e29f4b3d0532dfd3c6a939ac2bc63
* | Add tests for setup-bcb and clear-bcb via uncrypt.Tao Bao2016-12-142-0/+176
|/ | | | | | | | | | Bug: http://b/33534933 Test: recovery_component_test passes (and fails on buggy build due to the CL in [1]). [1]: commit 7e31f421a514da09b90e46dbd642a5e9b16e0003 Change-Id: I120498048ec1db8f9fcbb3cf135c05d3a48cfcdf
* tests: Add testcases for EMMC targets.Tao Bao2016-11-221-31/+144
| | | | | | | | | | | | | There're two types of targets in applypatch: regular files and EMMC targets. We have two sets of functions to handle them respectively. This CL adds testcases to use "EMMC:filename:size:sha1" as the target name, which triggers the code path for patching EMMC targets. Bug: 33034669 Test: recovery_component_test passes. Change-Id: I8f10c6c8d2c1fb083f06a83de91d9e23cb41fb6d
* updater: Refactor set_stage() and get_stage() functions.Tao Bao2016-11-182-0/+61
| | | | | | | | | | | Add read_bootloader_message_from() and write_bootloader_message_to() to allow specifying the BCB device (/misc). Also add testcases for set_stage() and get_stage(). Test: recovery_component_test passes. Test: Build a recovery image and apply a two-step OTA package. Change-Id: If5ab06a1aaaea168d2a9e5dd63c07c0a3190e4ae
* updater: Add testcase for package_extract_dir().Tao Bao2016-11-182-0/+98
| | | | | Test: recovery_component_test passes. Change-Id: I3af4707bc42c7331ca961be8b967a53de82ea25b
* updater: Add "write_value()" function.Tao Bao2016-11-171-0/+33
| | | | | | | | | | | | | write_value(value, filename) writes 'value' to 'filename'. It can be used to tune device settings when applying an OTA package. For example, write_value("960000", "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"). Bug: 32463933 Test: recovery_component_test passes. Test: Apply an OTA package that contains a call to write_value(), and check the result. Change-Id: Ib009ecb8a45a94353f10c59e2383fe1f49796e35
* updater: Fix the wrong return value for package_extract_file().Tao Bao2016-11-154-20/+86
| | | | | | | | | | | | | | | 'bool success = ExtractEntryToFile()' gives opposite result. Fix the issue and add testcases. Change the one-argument version of package_extract_file() to explicitly abort for non-existent zip entry. Note that this is NOT changing the behavior. Prior to this CL, it aborts from Evaluate() function, by giving a general cause code. Now it returns kPackageExtractFileFailure. BUg: 32903624 Test: recovery_component_test works. Change-Id: I7a273e9c0d9aaaf8c472b2c778f7b8d90362c24f
* updater: Add more testcase for symlink().Tao Bao2016-11-091-6/+39
| | | | | | | | Clean up SymlinkFn() a bit. Also clean up the temp files created when running the tests; otherwise non-empty TemporaryDir won't be removed. Test: recovery_component_test passes. Change-Id: Id3844abebd168c40125c4dcec54e6ef680a83c3a
* Merge "Make make_parent() to take const argument"Treehugger Robot2016-11-081-0/+22
|\
| * Make make_parent() to take const argumentTianjie Xu2016-11-081-0/+22
| | | | | | | | | | | | | | | | Switch to use const std::string; and add corresponding tests. Bug: 32649858 Test: Component tests pass Change-Id: I640f3ec81f1481fa91aa310f8d4d96dac9649cb9
* | Move recovery_test.cpp out of unit testTianjie Xu2016-11-083-92/+99
| | | | | | | | | | | | | | | | Move recovery-refresh/persist tests out because these tests need special steps to run. Also switch the constants to std::string. Test: recovery_manual_test passed on an A/B device Change-Id: I60b3ec6f094044945c3aafc1fae540896a6ddea6
* | otautil: Clean up SysUtil.cpp.Tao Bao2016-11-072-6/+147
|/ | | | | | | | | | Add unit testcases for sysMapFile(). Test: recovery_unit_test passes. Test: Build and use the new recovery image to sideload a package. Test: Build and use the new recovery image to install an update. Change-Id: I77d8f1ea151ab513865d992c256ba93a1fcb51a4
* tests: Fix unit/zip_test.cpp.Tao Bao2016-11-041-59/+50
| | | | | | | | | It's accidentally broken when refactoring the testdata path. Also clean up the testcase a bit by simplying the file reading. Test: recovery_unit_test passes. Change-Id: I592a1cf5a4eb9a7a5f4eecbc6426baeedeb02781
* updater: Add a testcase for RenameFn().Tao Bao2016-11-041-0/+29
| | | | | | Test: recovery_component_test passes. Change-Id: Iba5a0fdf6c79e2bed6b30b8fc19a306c1ab29d8a
* updater: Fix a bug in DeleteFn().Tao Bao2016-11-041-0/+33
| | | | | | | Also add a testcase for delete() function. Test: recovery_component_test passes. Change-Id: I064d1ad4693c3ed339d0a69eabadd08a61a2ea86
* updater: Fix an off-by-1 bug in file_getprop().Tao Bao2016-11-031-0/+50
| | | | | | | | Also add a testcase for file_getprop(). Test: recovery_component_test passes. Change-Id: I8eb2f9a5702b43997ac9f4b29665eea087b1c146
* tests: Set up testdata path for continuous native tests.Tao Bao2016-11-034-31/+23
| | | | | | | | | | | | | | | | | | | | continuous_native_tests expects the testdata under DATA/ in continuous_native_tests.zip. This CL packs a copy of the testdata into continuous_native_tests.zip as DATA/nativetest/recovery/testdata (via LOCAL_PICKUP_FILES). This CL also removes the extra copy for nativetest64. Testdata will always stay at /data/nativetest/recovery/testdata, even for 64-bit version. Otherwise we will unnecessarily get four copies (two for data/ and another two for DATA/). Bug: 32123241 Test: mmma bootable/recovery && adb sync data. On bullhead, /data/nativetest/recovery_component_test/recovery_component_test works; /data/nativetest64/recovery_component_test/recovery_component_test works. Test: m continuous_native_test; DATA/nativetest/recovery/testdata exists. Change-Id: Ifefa0309de7af23c77654e8e450848ca2da218c2
* applypatch: Add testcases for applypatch executable.Tao Bao2016-11-017-257/+324
| | | | | | | | | | | | | | | Refactor applypatch/main.cpp into libapplypatch_modes so that we can add testcases. Some changes to applypatch/main.cpp: - Replace char** argv with const char**; - Use android::base::Split() to split ":"; - Use android::base::ParseUInt(). Bug: 32383590 Test: Unit tests pass, install-recovery.sh works. Change-Id: I44e7bfa5ab717d439ea1d0ee9ddb7b2c40bb95a4
* applypatch: Switch the parameter of Value** to std::vector.Tao Bao2016-10-291-126/+138
| | | | | | Test: Unit tests and install-recovery.sh pass on angler and dragon. Change-Id: I328e6554edca667cf850f5584ebf1ac211e3d4d1
* tests: Generate testdata for 2nd arch.Tao Bao2016-10-261-1/+12
| | | | | | | | | | | | | | We currently only copy the testdata to $(TARGET_OUT_DATA_NATIVE_TESTS)/recovery, which fails the tests generated for 2nd arch (TARGET_2ND_ARCH). For example, on angler /data/nativetest/recovery_component_test/recovery_component_test fails due to missing testdata. Bug: 32123241 Test: Both of /data/nativetest/recovery... and /data/nativetest64/recovery... work on angler. Change-Id: Ib76264b4408d01c08b2619c8ac84b2476ea5a8bc
* Add a unit test for applypatch_checkTianjie Xu2016-10-191-0/+5
| | | | | | | | | If no sha1 is specified, applypatch_check should pass as long as the file content loads successfully. Add a unit case acccordingly. Test: Unit tests passed Bug: 32243751 Change-Id: I8c013be67c197d2935e11cf6acc59fb9b943cfd9
* Replace minzip with libziparchiveTianjie Xu2016-10-185-3/+104
| | | | | | | | | | | Clean up the duplicated codes that handle the zip files in bootable/recovery; and rename the library of the remaining utility functions to libotautil. Test: Update package installed successfully on angler. Bug: 19472796 Change-Id: Iea8962fcf3004473cb0322b6bb3a9ea3ca7f679e
* Change StringValue to use std::stringTianjie Xu2016-10-153-81/+67
| | | | | | | | | | | Changing the field of 'Value' in edify to std::string from char*. Meanwhile cleaning up the users of 'Value' and switching them to cpp style. Test: compontent tests passed. Bug: 31713288 Change-Id: Iec5a7d601b1e4ca40935bf1c70d325dafecec235
* edify: Some clean-ups to libedify.Tao Bao2016-10-132-6/+23
| | | | | | | | | | | | - Remove dead declarations in expr.h: SetError(), GetError(), ClearError(). - Remove the declaration of Build() out of expr.h. - Use std::unordered_map to implement RegisterFunction() and FindFunction(); kill FinishRegistration(). - Add a testcase for calling unknown functions. Test: mmma bootable/recovery; recovery_component_test passes. Change-Id: I9af6825ae677f92b22d716a4a5682f58522af03b
* updater: Kill the duplicate PrintSha1() in install.cpp.Tao Bao2016-10-111-7/+36
| | | | | | | | Also add a testcase for sha1_check(). Test: mmma bootable/recovery; recovery_component_test passes. Change-Id: I4d06d551a771aec84e460148544f68b247a7e721
* Refactor libupdater into a seperate module.Tao Bao2016-10-112-6/+93
| | | | | | | | | So that we can write native tests for updater functions. This CL adds a testcase for getprop() function. Test: mmma bootable/recovery; Run recovery_component_test on device. Change-Id: Iff4c1ff63c5c71aded2f9686fed6b71cc298c228
* edify: Move State.script and State.errmsg to std::string.Tao Bao2016-10-041-6/+1
| | | | | | | | | | | This way we kill a few strdup() and free() calls. Test: 1. recovery_component_test still passes; 2. Applying an update with the new updater works; 3. The error code in a script with abort("E310: xyz") is recorded into last_install correctly. Change-Id: Ibda4da5937346e058a0d7cc81764d6f02920010a
* Merge "recovery: drop log/logger.h"Mark Salyzyn2016-10-041-1/+0
|\
| * recovery: drop log/logger.hMark Salyzyn2016-10-041-1/+0
| | | | | | | | | | | | | | | | | | | | private/android_logger.h contains all we need. Test: compile Bug: 26552300 Bug: 31289077 Bug: 31456426 Change-Id: I6714d730372dc81f784e7f9dfee8a33848643a5d
* | edify: Move the testcases to gtest.Tao Bao2016-10-042-0/+158
|/ | | | | | | | | | | | | Now they live in tests/component/edify_test.cpp. Also rename edify/main.cpp to edify/edify_parser.cpp. It becomes a host-side debugging tool that validates the input edify script. However, it supports edify builtin functions only and doesn't recognize the ones defined via updater. Test: recovery_component_test passes on device. Change-Id: Ib94a787bf15098a9cc078d256b6a6dc96ff12b2e
* Turn on -Werror for recoveryTianjie Xu2016-09-301-1/+2
| | | | | | | | | | Also remove the 0xff comparison when validating the bootloader message fields. As the fields won't be erased to 0xff after we remove the MTD support. Bug: 28202046 Test: The recovery folder compiles for aosp_x86-eng Change-Id: Ibb30ea1b2b28676fb08c7e92a1e5f7b6ef3247ab
* Switch recovery to libbase loggingTianjie Xu2016-09-011-2/+3
| | | | | | | | Clean up the recovery image and switch to libbase logging. Bug: 28191554 Change-Id: Icd999c3cc832f0639f204b5c36cea8afe303ad35 Merged-In: Icd999c3cc832f0639f204b5c36cea8afe303ad35
* Fix clang-tidy warnings in bootable/recovery.Chih-Hung Hsieh2016-08-261-1/+1
| | | | | | | | | | | | * Use const reference type for read-only parameters. Bug: 30407689 * Use faster overloaded string find function. Bug: 30411878 * Add parentheses around macro parameters. Bug: 28705665 Test: build with WITH_TIDY=1 Change-Id: I4e8e5748bfa4ae89871f1fb5fa4624d372530d75
* Merge "Fix references to libcrypto_utils_static."Josh Gao2016-08-081-2/+2
|\ | | | | | | | | | | am: b97da5e0f0 Change-Id: Ia935df84e5ea36dfc6605b41872c36db69a114a0
| * Fix references to libcrypto_utils_static.Josh Gao2016-08-061-2/+2
| | | | | | | | | | Bug: http://b/30708454 Change-Id: I7a5048beff1d8b783a9683dcb4a79606a77f20ee
* | Merge \"Clean up verifier testcases.\"Tao Bao2016-08-0121-41/+30
|\| | | | | | | | | | | am: e91aef0ee9 Change-Id: Ia130dc2a7f62ecf1ad40ec03d88a331a31800efa
| * Clean up verifier testcases.Tao Bao2016-08-0121-41/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A Certificate is a pair of an RSAPublicKey and a particular hash. So v1 and v3 differ in the hash algorithm (SHA-1 vs SHA-256), similarly for v2 and v4. In verifier testcases, we used to load v1/v2 keys with an explicit argument of "sha256" to test the v3/v4 keys. This CL switches to loading v3/v4 keys directly and lets load_keys() to handle that, which is the actual flow we use in practice. Also remove the "fallback to v1 key" in the testcases, which is not the actual behavior. Bug: 30415901 Test: Run the verifier_test component test on device. Change-Id: I3a2baa64826f1b6c4c367a560090df384c4521bb
* | tests: Remove obsolete MTD support.Tao Bao2016-06-161-1/+0
| | | | | | | | | | | | | | | | Track the change in commit 63a319201fc0f5c34c1c62b446527e06f57f8d40 and fix builds. Bug: http://b/29250988 Change-Id: Iad5be953e102020931649629afc980d585ed2931
* | resolve merge conflicts of 5823dd4 to nyc-dev-plus-aospTianjie Xu2016-05-021-0/+1
|\ \ | | | | | | | | | Change-Id: I4ec33904a6af38d81b422c7be6f40b828fbc7525
| * | Add ability to show "installing security update"Tianjie Xu2016-04-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new command "--security" to boot commands. If this command is observed as part of BCB, choose a different background text picture for installing stage in recovery UI. As a result, users will see "installing security update" instead of "installing system update" when applying a security update package. Bug: 27837319 Change-Id: I2e2253a124993ecc24804fa1ee0b918ac96837c5
* | | Merge "Fix matches_locale function" into nyc-devTianjie Xu2016-04-212-1/+34
|\| | | | | | | | | | | | | | | | | | | | | | | | | | am: 8b86373 * commit '8b86373fd954276b18a6fba81afbe42c9caa49d3': Fix matches_locale function Change-Id: If7726c2f381ba0e4ab0519b77c167e75a9d46104
| * | Fix matches_locale functionTianjie Xu2016-04-202-1/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | matches_locale was expecting input locale string to have at most one underscore; as a result "zh_CN_#Hans" ignores "zh_CN" and matches into "zh". Fix the match function and add unit tests. Bug: 27837319 Change-Id: I4e8a66f91cae6ac2a46b6bf21f670d5ea564c7c8
| * | Use BoringSSL instead of mincrypt to speed up package verification.Elliott Hughes2016-04-145-109/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the verification code in bootable/recovery to use BoringSSL instead of mincrypt. Cherry-pick of 452df6d99c81c4eeee3d2c7b2171901e8b7bc54a, with merge conflict resolution, extra logging in verifier.cpp, and an increase in the hash chunk size from 4KiB to 1MiB. Bug: http://b/28135231 Change-Id: I1ed7efd52223dd6f6a4629cad187cbc383d5aa84
| * | recovery: use __android_log_pmsg_file_write for log filesMark Salyzyn2016-03-312-0/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cherry-pick from commit a4f701af93a5a739f34823cde0c493dfbc63537a) - Add call to __android_log_pmsg_file_write for recovery logging. - Add call to refresh pmsg if we reboot back into recovery and then allow overwrite of those logs. - Add a new one-time executable recovery-refresh that refreshes pmsg in post-fs phase of init. We rely on pmsg eventually scrolling off to age the content after recovery-persist has done its job. - Add a new one-time executable recovery-persist that transfers from pmsg to /data/misc/recovery/ directory if /cache is not mounted in post-fs-data phase of init. - Build and appropriately trigger the above two as required if BOARD_CACHEIMAGE_PARTITION_SIZE is undefined. - Add some simple unit tests NB: Test failure is expected on systems that do not deliver either the recovery-persist or recovery-refresh executables, e.g. systems with /cache. Tests also require a timely reboot sequence of test to truly verify, tests provide guidance on stderr to direct. Bug: 27176738 Change-Id: I17bb95980234984f6b2087fd5941b0a3126b706b
* | | resolve merge conflicts of 2bf95ac to nyc-dev-plus-aospElliott Hughes2016-04-135-109/+27
|\ \ \ | | |/ | |/| | | | Change-Id: Iaf232fbe65879bad6e19c7a9600aa6303a491a67
| * | Convert recovery to use BoringSSL instead of mincrypt.Mattias Nissler2016-04-065-109/+28
| | | | | | | | | | | | | | | | | | | | | This changes the verification code in bootable/recovery to use BoringSSL instead of mincrypt. Change-Id: I37b37d84b22e81c32ac180cd1240c02150ddf3a7
* | | Merge "recovery: use __android_log_pmsg_file_write for log files" am: 75da771Mark Salyzyn2016-03-312-0/+94
|\| | | | | | | | | | | | | | | | | | | | | | | | | | am: 6f83130 * commit '6f83130d7acd85df89a80e691d3aa63bd2ceda39': recovery: use __android_log_pmsg_file_write for log files Change-Id: Id2e7a76bae8eb061f6f57249dd912f25cd6332c6
| * | recovery: use __android_log_pmsg_file_write for log filesMark Salyzyn2016-03-282-0/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add call to __android_log_pmsg_file_write for recovery logging. - Add call to refresh pmsg if we reboot back into recovery and then allow overwrite of those logs. - Add a new one-time executable recovery-refresh that refreshes pmsg in post-fs phase of init. We rely on pmsg eventually scrolling off to age the content after recovery-persist has done its job. - Add a new one-time executable recovery-persist that transfers from pmsg to /data/misc/recovery/ directory if /cache is not mounted in post-fs-data phase of init. - Build and appropriately trigger the above two as required if BOARD_CACHEIMAGE_PARTITION_SIZE is undefined. - Add some simple unit tests NB: Test failure is expected on systems that do not deliver either the recovery-persist or recovery-refresh executables, e.g. systems with /cache. Tests also require a timely reboot sequence of test to truly verify, tests provide guidance on stderr to direct. Bug: 27176738 Change-Id: I17bb95980234984f6b2087fd5941b0a3126b706b
* | | Merge "Port applypatch.sh tests to recovery_component_tests" into nyc-devJed Estep2016-03-127-7/+428
|\ \ \ | |/ / |/| / | |/ | | | | | | am: 761653a4ad * commit '761653a4ad1c392fcd505e8909661fd64f02ce97': Port applypatch.sh tests to recovery_component_tests
| * Port applypatch.sh tests to recovery_component_testsJed Estep2016-03-127-8/+429
| | | | | | | | | | Bug: 27135282 Change-Id: If53682b591397ddfdb84860a3779b612904d4489
| * Fix verifier test base testdata directory after merge conflictJed Estep2016-02-221-1/+1
| | | | | | | | Change-Id: I7ffba0be5a6befc875ce59b51a008c1892e7d34b
* | Merge "verifier_test: Suppress the unused parameter warnings."Tao Bao2016-02-091-8/+9
|\ \
| * | verifier_test: Suppress the unused parameter warnings.Tao Bao2016-02-051-8/+9
| |/ | | | | | | Change-Id: I51fec30114c0a31efc9c2ac8472654baf8bb3e84
* / Change on-device directory for recovery test dataJed Estep2016-02-052-2/+2
|/ | | | | | Test data needs to go outside the gtest module. Change-Id: Ic444ca838cbafa651ec97ff8730129da84fafc09
* Refactor existing tests to use gtestJed Estep2016-02-0422-3/+413
| | | | | Bug: 26962907 Change-Id: I5f80636af1740badeff7d08193f08e23f4e4fee1
* recovery: Switch to clangTao Bao2015-06-031-0/+1
| | | | | | And a few trival fixes to suppress warnings. Change-Id: I38734b5f4434643e85feab25f4807b46a45d8d65
* More test makefile cleanup.Dan Albert2014-10-171-24/+23
| | | | | | | Global variables kill. No need to manually link gtest, and that causes problems with libc++. Change-Id: If804cdd436cf1addfa9a777708efbc37c27770b6
* Add support for ECDSA signaturesKenny Root2013-10-102-0/+264
This adds support for key version 5 which is an EC key using the NIST P-256 curve parameters. OTAs may be signed with these keys using the ECDSA signature algorithm with SHA-256. Change-Id: Id88672a3deb70681c78d5ea0d739e10f839e4567