summaryrefslogtreecommitdiffstats
path: root/applypatch/applypatch.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge AOSP android-9.0.0_r3Ethan Yonker2018-08-241-33/+19
|\ | | | | | | | | | | Fix conflicts and make it build in 5.1, 6.0, 7.1, 8.1, and 9.0 Change-Id: Ida0a64c29ff27d339b7f42a18d820930964ac6e4
| * Add a singleton CacheLocation to replace the hard coded locationsTianjie Xu2018-02-281-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | This class allows us to set the following locations dynamically: cache_temp_source, last_command_file, stash_directory_base. In the updater's main function, we reset the values of these variables to their default locations in /cache; while we can set them to temp files in unit tests or host simulation. Test: unit tests pass Change-Id: I528652650caa41373617ab055d41b1f1a4ec0f87
| * Skip the cache size check on hostTianjie Xu2018-02-131-3/+2
| | | | | | | | | | | | | | | | | | | | | | When running the update simulation, we choose to skip the cache size check for now due to the lack of "/cache" on host. And in later cls we can implement a cache size estimator to make the check more constrained. Also build the host version of support libraries. Test: unit test pass Change-Id: I3ed93c857fd02f7b62f5baba9130f75c3236e717
| * applypatch: Remove the 'st' field from FileContents.Tao Bao2017-12-071-15/+3
| | | | | | | | | | | | | | | | It used to keep track of the stat(2) info (e.g. st_mode/st_gid/st_uid) while patching a file in file-based OTA. Test: Build and use the new updater to apply an update on bullhead. Change-Id: Ibf8f0f4b14298a9489bf24a2678bb279c5d9c8f3
| * applypatch: Change the patch parameter to const Value& in Apply{BSDiff,Image}Patch.Tao Bao2017-11-101-4/+4
| | | | | | | | | | | | | | It used to be "const Value*", but nullptr won't be a valid input. Test: recovery_host_test; recovery_component_test Change-Id: I904b5689ac3e64504088bf0544c9fb5d45a52243
| * Switch to bionic gtest in bootable/recoveryTianjie Xu2017-11-031-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We encountered segfaults in Imgdiff host tests due to the failure to reset states of getopt. The problem can be solved by switching to use bionic's gtest where a new process is forked for each test. Also modify the recovery_component_test to make sure it runs in parallel. Changes include: 1. Merge the writes to misc partition into one single test. 2. Change the hard coded location "/cache/saved.file" into a configurable variable. Bug: 67849209 Test: recovery tests pass Change-Id: I165d313f32b83393fb7922c5078636ac40b50bc2
| * Move rangeset.h and print_sha1.h into otautil.Tao Bao2017-10-111-1/+1
| | | | | | | | | | | | | | | | | | Also drop the "bootable/recovery" path in LOCAL_C_INCLUDES from applypatch modules. Test: lunch aosp_{angler,bullhead,fugu,dragon,sailfish}-userdebug; mmma bootable/recovery Change-Id: Idd602a796894f971ee4f8fa3eafe36c42d9de986
| * otafault: Move headers under otafault/.Tao Bao2017-09-291-1/+1
| | | | | | | | | | Test: mmma bootable/recovery Change-Id: I3ceb72f703c7c2857d656c137d71baa1fccd8238
* | Merge up to android-8.1.0_r1 and fix conflictsEthan Yonker2017-12-151-25/+20
|\| | | | | | | Change-Id: I2dc060134d15ec9f015a606cb24ef8276f6af1fc
| * applypatch: Let Apply{BSDiff,Image}Patch accept std::function.Tao Bao2017-03-281-14/+10
| | | | | | | | | | | | Test: mmma bootable/recovery system/update_engine Test: recovery_component_test Change-Id: I93c2caa87bf94a53509bb37f98f2c02bcadb6f5c
| * applypatch: Change the ssize_t length parameters to size_t.Tao Bao2017-03-281-19/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mostly for applypatch family APIs like ApplyBSDiffPatch() and ApplyImagePatch(). Changing to size_t doesn't indicate they would necessarily work with very large size_t (e.g. > ssize_t), just similar to write(2). But otherwise accepting negative length doesn't make much sense. Also change the return type of SinkFn from ssize_t to size_t. Callers tell a successful sink by comparing the number of written bytes against the desired value. Negative return values like -1 are not needed. This also makes it consistent with bsdiff::bspatch interface. Test: recovery_component_test Test: Apply an incremental with the new updater. Change-Id: I7ff1615203a5c9854134f75d019e266f4ea6e714
* | Update to AOSP 8.0 baseEthan Yonker2017-09-081-650/+406
|\| | | | | | | Change-Id: I29fe722b4eb9718765327902779046840a01433e
| * applypatch: Drop the support for patching non-EMMC targets.Tao Bao2017-03-161-277/+109
| | | | | | | | | | | | | | | | | | | | | | 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
| * applypatch: Don't expose FindMatchingPatch().Tao Bao2016-12-281-1/+1
| | | | | | | | | | Test: make Change-Id: Ic77c4669574b6129e06aa6051804f419bcc8196c
| * Bugfix:updater always retry apply patch failed,when memcpy failed.katao2016-12-191-0/+11
| | | | | | | | | | | | | | | | | | https://code.google.com/p/android/issues/detail?id=230602 On the second attempt, open the file with O_RDONLY, which causing a write failure。 Change-Id: If89165b8c7619fe25722073a46b3cc7c61530a71 Signed-off-by: katao <ustckato@gmail.com>
| * Remove ota_close(int) and ota_fclose(FILE*).Tao Bao2016-11-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | We should always use unique_fd or unique_file to hold the FD or FILE* pointer when opening via ota_(f)open functions. This CL avoids accidentally closing raw FDs or FILE* pointers that are managed by unique_fd/unique_file. Test: recovery_component_test passes. Change-Id: If58eb8b5c5da507563f85efd5d56276472a1c957
| * Add ota_close(unique_fd&) and ota_fclose(std::unique_ptr<FILE>&).Tao Bao2016-11-231-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were using the below sequence prior to the CL in [1]. unique_fd fd(ota_open(...)); ota_close(fd); fd.reset(ota_open(...)); fd.reset() may unintentionally close the newly opened FD if it has the same value as the early ota_open. The CL in [1] changed to "ota_close(fd.release())" to avoid the issue. This CL adds a new overloaded function ota_close(unique_fd&) to handle the release automatically. Similarly add ota_fclose(std::unique_ptr<FILE>&). [1] commit 48cf770471ef53fbf0a1837196220862a0bdb18d. Bug: 33034669 Test: recovery_component_test passes. Change-Id: Ief91edc590e95a7426e33364b28754173efb1056
| * applypatch: Release FD when explicitly calling close.Tao Bao2016-11-211-5/+5
| | | | | | | | | | | | | | | | | | | | | | We use android::base::unique_fd() to avoid leaking FD. We also want to call close (or ota_close) to explicitly check the close result. When combining the two together, we need to release the unique_fd to avoid closing the same FD twice. Bug: 33034669 Test: Trigger applypatch with install-recovery.sh. Change-Id: I1a4f5d5fba7a23ef98d8bd7b7b07e87ae6f705c5
| * applypatch: Use unique_fd to avoid leaking FDs.Tao Bao2016-11-171-282/+270
| | | | | | | | | | | | | | | | | | Add unique_fd that calls ota_close() instead of the default closer. Test: recovery_component_test passes. Test: Apply a package that calls apply_patch(). Change-Id: I0c19921731757934f76cf7d5215916673a8f2777
| * applypatch: Clean up LoadPartitionContents().Tao Bao2016-11-171-283/+257
| | | | | | | | | | | | | | | | | | We don't need three vectors to sort the (size, SHA-1) pairs. Test: recovery_component_test passes. Test: Apply a package that calls apply_patch_check() to patch EMMC partitions. Change-Id: I4a6620630a6711f490822cf30f1e7fe5cea6ce49
| * applypatch: Switch the parameter of Value** to std::vector.Tao Bao2016-10-291-8/+8
| | | | | | | | | | | | Test: Unit tests and install-recovery.sh pass on angler and dragon. Change-Id: I328e6554edca667cf850f5584ebf1ac211e3d4d1
| * Fix applypatch_check failure when applying update on anglerTianjie Xu2016-10-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | Applypatch_check should be skipped if no sha is specified. As the comments said: "It's okay to specify no sha1s; the check will pass if the LoadFileContents is successful. Useful for reading partitions, where the filename encodes the sha1s." Test: The update package applied on angler successfully. Bug: 32243751 Change-Id: Ib8f3dadf19f745c2dbd350d60da46ab12d75bc87
| * Change StringValue to use std::stringTianjie Xu2016-10-151-16/+12
| | | | | | | | | | | | | | | | | | | | | | 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
| * Check an edge case when read(2) returns 0Tianjie Xu2016-09-011-0/+3
| | | | | | | | | | | | | | | | | | | | We might end up in an infinite loop if read(2) reached EOF unexpectedly. The problematic code in uncrypt mentioned in the bug has been fixed by switching to libbase ReadFully(). So I grepped through the recovery code and fixed some other occurences of the issue. Bug: 31073201 Change-Id: Ib867029158ba23363b8f85d61c25058a635c5a6b
| * Remove obsolete MTD support.Elliott Hughes2016-06-101-207/+101
| | | | | | | | | | Bug: http://b/29250988 Change-Id: Ia97ba9082a165c37f74d6e1c3f71a367adc59945
| * Fix google-runtime-int warnings.Chih-Hung Hsieh2016-04-181-1/+1
| | | | | | | | | | Bug: 28220065 Change-Id: Ida199c66692a1638be6990d583d2ed42583fb592
| * Fix the improper use of LOCAL_WHOLE_STATIC_LIBRARIES.Tao Bao2016-03-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | If two libraries both use LOCAL_WHOLE_STATIC_LIBRARIES and include a same library, there would be linking errors when generating a shared library (or executable) that depends on the two libraries both. Also clean up Android.mk files. Remove the "LOCAL_MODULE_TAGS := eng" line for the updater module. The module will then default to "optional" which won't be built until needed. Change-Id: I3ec227109b8aa744b7568e7f82f575aae3fe0e6f
| * Control fault injection with config files instead of build flagsJed Estep2016-02-231-1/+1
| | | | | | | | | | | | Bug: 26570379 Change-Id: I76109d09276d6e3ed3a32b6fedafb2582f545c0c (cherry picked from commit d940887dde23597dc358b16d96ca48dd7480fee6)
| * applypatch: use vector to store data in FileContents.Yabin Cui2016-02-121-71/+32
| | | | | | | | | | Bug: 26906416 Change-Id: Ib53b445cd415a1ed5e95733fbc4073f9ef4dbc43
| * IO fault injection for OTA packagesJed Estep2016-02-101-26/+27
| | | | | | | | | | | | Bug: 25951086 Change-Id: I31c74c735eb7a975b7f41fe2b2eff042e5699c0c (cherry-picked from commit f1fc48c6e62cfee42d25ad12f443e22d50c15d0b)
* | Fix updater binary for 7.0Ethan Yonker2016-08-311-4/+4
| | | | | | | | | | | | | | Note: updater is currently not backwards compatible with older trees. Maybe later... Change-Id: I3c2a5ef69cfa9005502408f7054e3096a64ba34b
* | Update to 7.0Ethan Yonker2016-08-241-3/+43
| | | | | | | | Change-Id: I621cc47352f7ac552d9602485825ae3a6f9ae516
* | Control fault injection with config files instead of build flagsJed Estep2016-03-191-1/+1
| | | | | | | | | | Bug: 27724259 Change-Id: I65bdefed10b3fb85fcb9e1147eaf0687d7d438f4
* | Revert "DO NOT MERGE Control fault injection with config files instead of build flags"Tao Bao2016-03-171-1/+1
| | | | | | | | | | | | | | This reverts commit f73abf36bcfd433a3fdd1664a77e8e531346c1b1. Bug: 27724259 Change-Id: I1301fdad15650837d0b1febd0c3239134e2b94fb
* | DO NOT MERGE Control fault injection with config files instead of build flagsJed Estep2016-03-161-1/+1
| | | | | | | | | | Bug: 26570379 Change-Id: I76109d09276d6e3ed3a32b6fedafb2582f545c0c
* | applypatch: use vector to store data in FileContents.Yabin Cui2016-03-111-72/+33
| | | | | | | | | | | | | | | | | | Cherry pick this patch because it fixes the problem that a newed Value is released by free(). Bug: 26906416 Change-Id: Ib53b445cd415a1ed5e95733fbc4073f9ef4dbc43 (cherry picked from commit d6c93afcc28cc65217ba65eeb646009c4f15a2ad)
* | resolve merge conflicts of 715d8a203a to master.Yabin Cui2016-02-061-96/+83
|\| | | | | | | Change-Id: Ic868ee9b27ef7251aa49ac814de7355ecd9c7d37
| * applypatch: fix memory leaks reported by static analysis.Yabin Cui2016-02-051-96/+83
| | | | | | | | | | Bug: 26906416 Change-Id: I163df5a8f3abda3ba5d4ed81dfc8567054eceb27
* | resolve merge conflicts of 7b6027dde4 to master.Tao Bao2016-02-041-24/+23
|\| | | | | | | Change-Id: I1d5232f61744bb18ca5de3a16a340bc3afd110bb
| * Switch from mincrypt to BoringSSL in applypatch and updater.Sen Jiang2016-02-041-24/+23
| | | | | | | | | | Bug: 18790686 Change-Id: I7d2136fb39b2266f5ae5be24819c617b08a6c21e
* | IO fault injection for OTA packagesJed Estep2016-01-061-24/+25
|/ | | | | Bug: 25951086 Change-Id: I31c74c735eb7a975b7f41fe2b2eff042e5699c0c
* Track rename from base/ to android-base/.Elliott Hughes2015-12-051-1/+1
| | | | Change-Id: I354a8c424d340a9abe21fd716a4ee0d3b177d86f
* updater: Clean up char* with std::string.Tao Bao2015-08-061-11/+1
| | | | | | | So we can remove a few free()s. And also replace a few pointers with references. Change-Id: I4b6332216704f4f9ea4a044b8d4bb7aa42a7ef26
* applypatch: Fix the checking in WriteToPartition().Tao Bao2015-07-251-3/+4
| | | | | | | | WriteToPartition() should consider a target name as valid if it contains multiple colons. But only the first two fields will be used. Bug: 22725128 Change-Id: Ie9404375e24045c115595eec6ce5b6423da8fc3e
* applypatch: Support flash mode.Tao Bao2015-07-241-12/+72
| | | | | | | | | | We may carry a full copy of recovery image in the /system, and use /system/bin/install-recovery.sh to install the recovery. This CL adds support to flash the recovery partition with the given image. Bug: 22641135 Change-Id: I7a275b62fdd1bf41f97f6aab62d0200f7dae5aa1 (cherry picked from commit 68c5a6796737bb583a8bdfa4c9cd9c7f12ef4276)
* applypatch: Refactor strtok().Tao Bao2015-07-241-83/+53
| | | | | | | We have android::base::Split() for the work. Change-Id: I0fb562feb203c9b15e2f431d8e84355fd682376a (cherry picked from commit 0a47ce27de454e272a883a0c452fad627fd7f419)
* recovery: Switch applypatch/ and updater/ to cpp.Tao Bao2015-07-141-0/+1025
Mostly trivial changes to make cpp compiler happy. Change-Id: I69bd1d96fcccf506007f6144faf37e11cfba1270