summaryrefslogtreecommitdiffstats
path: root/minadbd (unfollow)
Commit message (Collapse)AuthorFilesLines
2020-12-14Do not call exit() immediately after serving sideloadKelvin Zhang1-1/+40
Wait for socket to close before exit(), so that last "DONEDONE" message is correctly sent. Test: enter recovery, sideload an OTA, verify that no read error occured on client side. Repeat 5 times. Bug: 155158483 Change-Id: Ibb02548d8c03fb77f8f60cb69cff84c33903adc0
2020-10-24Migrate system/core/adb to packages/modules/adbBaligh Uddin1-1/+1
BUG: 167963357 Test: TH Merged-In: Ied65135d7c635d1675af591ccc64c26632935161 Change-Id: I9dc89eb980796b84bbfbc9d977bb473473a933e5
2020-10-23Migrate system/core/adb to packages/modules/adbBaligh Uddin1-1/+1
BUG: 167963357 Test: TH Merged-In: Ied3afa5d19d814155c5ecbe2363ba544f2ab96b7 Change-Id: Ied65135d7c635d1675af591ccc64c26632935161
2020-10-23Migrate system/core/adb to packages/modules/adbBaligh Uddin1-1/+1
BUG: 167963357 Test: TH Merged-In: Ia6b4ff799d94a0509f971086e72a60f1f1734e49 Change-Id: Ied3afa5d19d814155c5ecbe2363ba544f2ab96b7
2020-10-22Migrate system/core/adb to packages/modules/adbBaligh Uddin1-1/+1
BUG: 167963357 Test: TH Merged-In: Ied65135d7c635d1675af591ccc64c26632935161 Change-Id: Ia6b4ff799d94a0509f971086e72a60f1f1734e49
2020-10-21Migrate system/core/adb to packages/modules/adbBaligh Uddin1-1/+1
BUG: 167963357 Test: TH Change-Id: Ied65135d7c635d1675af591ccc64c26632935161
2020-08-24Fix flaky tests by require root for minadbd_testsKelvin Zhang2-1/+3
minadbd tests require access to /dev/fuse, therefore needs to run as root. This test has been flaky because root preparetor wasn't specified. Bug: 165604640 Test: atest MinadbdServicesTest Change-Id: I6ee1e2deede4352e28aad79c436ec5974e7d64f6
2020-06-08Track rename of adbd_system_binaries.Josh Gao1-1/+1
Bug: http://b/157709367 Test: treehugger Change-Id: Ic205acc56a763c38ba689b2b895609b5e878d813 (cherry picked from commit d4a964f121ec03124a599eeed13a334677e942e9)
2020-06-02Track rename of adbd_system_binaries.Josh Gao1-1/+1
Bug: http://b/157709367 Test: treehugger Change-Id: Ic205acc56a763c38ba689b2b895609b5e878d813
2020-04-01minadbd: statically link libadbd.Josh Gao2-3/+13
Reduce the amount of wasted space on the recovery image by statically linking all of the adb libraries into minadbd. Bug: http://b/150317254 Test: booted aosp_walleye-eng into recovery Change-Id: I5233b1a23c14f9d478bb77c25ebdbb0ce45bcc5a Merged-In: I5233b1a23c14f9d478bb77c25ebdbb0ce45bcc5a (cherry picked from commit 5ee3eba34f0ddf478f53ac4d0774c1ee423a5182)
2020-03-31minadbd: statically link libadbd.Josh Gao2-3/+13
Reduce the amount of wasted space on the recovery image by statically linking all of the adb libraries into minadbd. Bug: http://b/150317254 Test: booted aosp_walleye-eng into recovery Change-Id: I5233b1a23c14f9d478bb77c25ebdbb0ce45bcc5a
2019-10-23Use adbd_system_binaries to track adbd's dependencies.Josh Gao1-0/+4
required doesn't propagate from apexes, so we need a separate phony target to track adbd's dependenecies. Test: m Change-Id: I13977d1376de63839bf182d2cfa56b5c6c63aba9
2019-10-05minadbd: Return battery level via getprop.Tao Bao2-2/+20
`adb rescue getprop rescue.battery_level` returns the current battery level. Bug: 134560109 Test: Build and boot into rescue mode. Test: `adb rescue getprop ro.build.fingerprint` Test: `adb rescue getprop rescue.battery_level` Test: `adb rescue getprop` to dump all the properties. Test: Run recovery_unit_test. Change-Id: I78a9e8ab9783ffc8532cb93e6a64fb2157c19bd5
2019-09-27minadbd: Update README.md.Tao Bao1-8/+24
Test: N/A Change-Id: I7f4648f2b357de7d9700e38552a0156d13c1bd0b
2019-09-26minadbd: Export minadbd/types.h to libinstall.Tao Bao5-5/+12
Test: mmma bootable/recovery Change-Id: I503e942b23cc51024aa752c1eb3db5455a44a9d1
2019-09-13Link libcrypto dynamically for recovery unit tests.Pete Bentley1-1/+1
Tested by running recovery_unit_test as described in https://android.googlesource.com/platform/bootable/recovery/+/refs/heads/master/README.md Attempted to build and boot a recovery image with the same change to confirm it still works, but m recoveryimage-nodeps fails for me. Bug: 140940227 Test: See above Change-Id: I00545968a0e5684823e505f2ddbe7e993319b5d4
2019-07-17minadbd sends heartbeat to rescue service for getprop command.Tao Bao2-0/+9
We start minadbd and rescue services in two processes. In particular, minadbd handles the requests from host, then communicates with rescue service to do install/wipe works. When resuce service doesn't see any request in a pre-defined timeout (currently 300s), rescue service will exit to avoid endless waiting. This CL changes minadbd to additionally send a no-op command to rescue service as a heartbeat signal, so that host side can finish time-consuming operations (e.g. downloading over network) while keeping rescue service alive. Bug: 136457446 Test: Enter resuce mode on blueline. Send `adb rescue getprop ro.build.fingerprint` and check that rescue service doesn't exit. Test: Stop sending the getprop command. Check that rescue service exits after 300s. Change-Id: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531 Merged-In: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531 (cherry picked from commit 2223e6a9f8bf24b023e8ae3103b50c37def3147e) (cherry picked from commit 0bbb2ed53eb4dc4ae8d447062482f9eda5ef9a91) (cherry picked from commit dd0158ac6016f2853d1af336e345980e06144abd)
2019-07-16minadbd sends heartbeat to rescue service for getprop command.Tao Bao2-0/+9
We start minadbd and rescue services in two processes. In particular, minadbd handles the requests from host, then communicates with rescue service to do install/wipe works. When resuce service doesn't see any request in a pre-defined timeout (currently 300s), rescue service will exit to avoid endless waiting. This CL changes minadbd to additionally send a no-op command to rescue service as a heartbeat signal, so that host side can finish time-consuming operations (e.g. downloading over network) while keeping rescue service alive. Bug: 136457446 Test: Enter resuce mode on blueline. Send `adb rescue getprop ro.build.fingerprint` and check that rescue service doesn't exit. Test: Stop sending the getprop command. Check that rescue service exits after 300s. Change-Id: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531 Merged-In: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531 (cherry picked from commit 2223e6a9f8bf24b023e8ae3103b50c37def3147e) (cherry picked from commit 0bbb2ed53eb4dc4ae8d447062482f9eda5ef9a91)
2019-07-11minadbd sends heartbeat to rescue service for getprop command.Tao Bao2-0/+9
We start minadbd and rescue services in two processes. In particular, minadbd handles the requests from host, then communicates with rescue service to do install/wipe works. When resuce service doesn't see any request in a pre-defined timeout (currently 300s), rescue service will exit to avoid endless waiting. This CL changes minadbd to additionally send a no-op command to rescue service as a heartbeat signal, so that host side can finish time-consuming operations (e.g. downloading over network) while keeping rescue service alive. Bug: 136457446 Test: Enter resuce mode on blueline. Send `adb rescue getprop ro.build.fingerprint` and check that rescue service doesn't exit. Test: Stop sending the getprop command. Check that rescue service exits after 300s. Change-Id: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531 Merged-In: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531 (cherry picked from commit 2223e6a9f8bf24b023e8ae3103b50c37def3147e)
2019-07-09minadbd sends heartbeat to rescue service for getprop command.Tao Bao2-0/+9
We start minadbd and rescue services in two processes. In particular, minadbd handles the requests from host, then communicates with rescue service to do install/wipe works. When resuce service doesn't see any request in a pre-defined timeout (currently 300s), rescue service will exit to avoid endless waiting. This CL changes minadbd to additionally send a no-op command to rescue service as a heartbeat signal, so that host side can finish time-consuming operations (e.g. downloading over network) while keeping rescue service alive. Bug: 136457446 Test: Enter resuce mode on blueline. Send `adb rescue getprop ro.build.fingerprint` and check that rescue service doesn't exit. Test: Stop sending the getprop command. Check that rescue service exits after 300s. Change-Id: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531
2019-07-09minadbd: delete unnecessary fdevent.h include.Josh Gao1-1/+0
Test: treehugger Change-Id: I09e9850dabbd71bffbe568f240f9fde8b3743e5e
2019-06-20Support starting fuse from a block mapTianjie Xu1-0/+4
Factor out a new function from ApplyFromSdcard that installs a package from a local path. Inside this function, we start the fuse and choose the type of data provider depending on the path string. And similar to the existing logic, we treat the package as a block map if the path starts with a '@'. This is part of the effort to install larger than 2GiB packages on ILP32 devices. Bug: 127071893 Test: Build a 32 bit sailfish and create a 3GiB OTA package. Sideload the package, uncrypt and install the package from sdcard. Change-Id: I328ea34fa530731acbce7554bfc3059313ad6ece
2019-06-11minadbd: `adb rescue getprop` returns newline-terminated result.Tao Bao1-10/+7
This change addresses the comment in [1], which makes the results of `adb shell getprop foo` and `adb rescue getprop foo` more consistent. That is, both will return newline-terminated results now. [1] https://r.android.com/c/platform/bootable/recovery/+/976340/3/minadbd/minadbd_services.cpp#188 Fixes: 134027350 Test: Run the following commands on taimen (under rescue mode): `adb rescue getprop ro.build.fingerprint` `adb rescue getprop ro.nonexistent` `adb rescue getprop` Change-Id: I5af47f8ea4d569b8507e259daef87749c0945f47 Merged-In: I5af47f8ea4d569b8507e259daef87749c0945f47 (cherry picked from commit 57a27890cec050d36a0d2d6e7db008cd22eb0560)
2019-06-10minadbd: `adb rescue getprop` returns newline-terminated result.Tao Bao1-10/+7
This change addresses the comment in [1], which makes the results of `adb shell getprop foo` and `adb rescue getprop foo` more consistent. That is, both will return newline-terminated results now. [1] https://r.android.com/c/platform/bootable/recovery/+/976340/3/minadbd/minadbd_services.cpp#188 Test: Run the following commands on taimen (under rescue mode): `adb rescue getprop ro.build.fingerprint` `adb rescue getprop ro.nonexistent` `adb rescue getprop` Change-Id: I5af47f8ea4d569b8507e259daef87749c0945f47
2019-06-06minadbd: Support `adb rescue getprop`.Tao Bao1-5/+18
It dumps all the allowed properties, similar to `adb shell getprop`. Bug: 134027350 Test: Run the command under rescue mode. Change-Id: Ic0864ca0fb51505ec1e4f38af2464591aa576201 Merged-In: Ic0864ca0fb51505ec1e4f38af2464591aa576201 (cherry picked from commit d8db81a01464c53c9bd6dbff32194faed85b6ccc)
2019-06-06minadbd: More allowed properties.Tao Bao1-1/+8
Most of these properties are already part of the fingerprint. This CL allows querying them directly, instead of encouraging users to decode from fingerprints. Bug: 134027350 Test: Boot into rescue mode on taimen. Run `adb rescue getprop` with new props. Change-Id: Id4667fcaf0e908c391085b22e22c957acd01d9c4 Merged-In: Id4667fcaf0e908c391085b22e22c957acd01d9c4 (cherry picked from commit 3b9ef341be618885407bc302ffc235585bc01c5d)
2019-06-05minadbd: Support `adb rescue getprop`.Tao Bao1-5/+18
It dumps all the allowed properties, similar to `adb shell getprop`. Bug: 134027350 Test: Run the command under rescue mode. Change-Id: Ic0864ca0fb51505ec1e4f38af2464591aa576201
2019-06-03minadbd: More allowed properties.Tao Bao1-1/+8
Most of these properties are already part of the fingerprint. This CL allows querying them directly, instead of encouraging users to decode from fingerprints. Bug: 134027350 Test: Boot into rescue mode on taimen. Run `adb rescue getprop` with new props. Change-Id: Id4667fcaf0e908c391085b22e22c957acd01d9c4
2019-05-03ConsumePrefix is now in libbase.Elliott Hughes1-5/+5
Test: treehugger Change-Id: I2feecabb77986d3e007de1009b123c2d98454631
2019-05-01Implement FuseBlockDataProviderxunchang1-0/+5
Adds a fuse data provider that parses the metadata from a block map, reads the data from the given ranges of the block device; and provides the data to the fuse. Bug: 127071893 Test: unit tests pass, install a package from block map Change-Id: Ie9925ee9144e98642505b3f5e1a4a186d2b21ed0
2019-04-30Support wipe command in rescue modexunchang3-8/+44
Bug: 131037235 Test: unit tests pass, run `adb rescue wipe` Change-Id: I22668f2c98fe2d9195d2561f961c28a7c08e712c (cherry picked from commit fedeef6f6d1f7b8f1e5a8b9e77f8dc21ef6b3c95)
2019-04-26minadbd: Support `adb reboot` under sideload/rescue modes.Tao Bao3-8/+54
Bug: 128415917 Test: Run the following commands under sideload and rescue modes respectively. $ adb reboot $ adb reboot bootloader $ adb reboot recovery $ adb reboot rescue $ adb reboot invalid Change-Id: I84daf63e3360b7b4a0af5e055149a4f54e10ba90 Merged-In: I84daf63e3360b7b4a0af5e055149a4f54e10ba90 (cherry picked from commit 10f441a9dbb91be3124f455439631abcf8e96cde)
2019-04-26Add test for minadbdxunchang4-1/+226
Ass some unit tests to check if the minadbd service exit correctly in the failure case. Also start the fuse and verify the socket communication between minadbd with adb host, and minadbd with recovery. Bug: 131037235 Test: run unit tests repeatedly, injects some errors and test fails without dangling process. Change-Id: I2f073b701b25d7f1aafc59868a7a91a8cbefaf49 Merged-In: I2f073b701b25d7f1aafc59868a7a91a8cbefaf49 (cherry picked from commit 9c04eb46b7492033e4675bd303a8bb20548081b5)
2019-04-26minadbd: Support rescue install and getprop commands.Tao Bao5-21/+82
Bug: 128415917 Test: Enter rescue mode on taimen. Send the following commands: `adb rescue getprop ro.build.fingerprint` `adb rescue getprop ro.build.date.utc` `adb rescue install /path/to/package.zip` Test: Sideload on taimen w/ `adb sideload /path/to/package.zip`. Change-Id: Ibc25daf9fd13f7002e54789f67aaf85d06976bb8 Merged-In: Ibc25daf9fd13f7002e54789f67aaf85d06976bb8 (cherry picked from commit ed717ca17d0b1a35f2d2e57802e2381a6004fdd1)
2019-04-26Remove the FD parameter from FuseDataProvider ctor.Tao Bao2-10/+8
This leaves the FD implementation details to subclasses. In particular, it allows minadbd to do additional works with the FD after sideloading. Bug: 128415917 Test: atest recovery_component_test Test: atest minadbd_test Test: Sideload package on taimen. Change-Id: I106bbaad05201227bbc5fe28890bbbb06fdcb67e Merged-In: I106bbaad05201227bbc5fe28890bbbb06fdcb67e (cherry picked from commit 2be9737cf449dd0650c85ee5168d09b12d386077)
2019-04-26Allow entering rescue mode via recovery UI.Tao Bao3-2/+18
Only enabled on debuggable builds. Bug: 128415917 Test: Sideload package on taimen. Test: Choose "Enter rescue" from recovery UI. Change-Id: I913dbdbcffd3179e6fa72ca862f74ca8f1364b02 Merged-In: I913dbdbcffd3179e6fa72ca862f74ca8f1364b02 (cherry picked from commit c6dc325e88a25201aa3856e6532c3ed14203a376)
2019-04-26Support wipe command in rescue modexunchang3-8/+44
Bug: 131037235 Test: unit tests pass, run `adb rescue wipe` Change-Id: I22668f2c98fe2d9195d2561f961c28a7c08e712c
2019-04-24minadbd: Support `adb reboot` under sideload/rescue modes.Tao Bao3-8/+54
Bug: 128415917 Test: Run the following commands under sideload and rescue modes respectively. $ adb reboot $ adb reboot bootloader $ adb reboot recovery $ adb reboot rescue $ adb reboot invalid Change-Id: I84daf63e3360b7b4a0af5e055149a4f54e10ba90
2019-04-23Add test for minadbdxunchang4-1/+226
Ass some unit tests to check if the minadbd service exit correctly in the failure case. Also start the fuse and verify the socket communication between minadbd with adb host, and minadbd with recovery. Bug: 131037235 Test: run unit tests repeatedly, injects some errors and test fails without dangling process. Change-Id: I2f073b701b25d7f1aafc59868a7a91a8cbefaf49
2019-04-19minadbd: Support rescue install and getprop commands.Tao Bao5-21/+82
Bug: 128415917 Test: Enter rescue mode on taimen. Send the following commands: `adb rescue getprop ro.build.fingerprint` `adb rescue getprop ro.build.date.utc` `adb rescue install /path/to/package.zip` Test: Sideload on taimen w/ `adb sideload /path/to/package.zip`. Change-Id: Ibc25daf9fd13f7002e54789f67aaf85d06976bb8
2019-04-17Allow entering rescue mode via recovery UI.Tao Bao3-2/+18
Only enabled on debuggable builds. Bug: 128415917 Test: Sideload package on taimen. Test: Choose "Enter rescue" from recovery UI. Change-Id: I913dbdbcffd3179e6fa72ca862f74ca8f1364b02
2019-04-16DO NOT MERGE: Add socket communication between recovery and minadbdxunchang5-25/+187
This cl adds a socket pair to support the communication between recovery and minadbd. Therefore, minadbd will be able to issue multiple commands to recovery and get back the status of each command. This cl also switches the adb sideload from the recovery menu to use this protocol; and moves minadbd to a separate binary. Bug: 130166585 Test: sideload a package Change-Id: I80d36d5c4e6fe1ae3ea23640907bc50c0dc0d482 (cherry picked from commit 34690ced91e22f5d9b5dd19c33b11c8e0b4bafa0)
2019-04-16Remove the FD parameter from FuseDataProvider ctor.Tao Bao2-10/+8
This leaves the FD implementation details to subclasses. In particular, it allows minadbd to do additional works with the FD after sideloading. Bug: 128415917 Test: atest recovery_component_test Test: atest minadbd_test Test: Sideload package on taimen. Change-Id: I106bbaad05201227bbc5fe28890bbbb06fdcb67e
2019-04-11Add socket communication between recovery and minadbdxunchang5-25/+187
This cl adds a socket pair to support the communication between recovery and minadbd. Therefore, minadbd will be able to issue multiple commands to recovery and get back the status of each command. This cl also switches the adb sideload from the recovery menu to use this protocol; and moves minadbd to a separate binary. Bug: 130166585 Test: sideload a package Change-Id: I80d36d5c4e6fe1ae3ea23640907bc50c0dc0d482
2019-03-19Remove the provider_vtabxunchang3-18/+5
It's no longer needed with the newly added FuseDataProvider class. Also cleans up the parameters for run_fuse_sideload. Bug: 127071893 Test: unit tests pass, run a sideload Change-Id: I1ccd6798d187cfc6ac9f559ffb3f3edf08dad55c
2019-03-19Create a FuseDataProvider base classxunchang5-39/+45
The fuse data provider for adb/sdcard shares common code and structures. This cl creates a FuseDataProvider base class and provides implementations for adb and sdcard. In the follow cls, we can kill the provider_vtab struct; and also add another implementation to parse a block map file and provides data. Test: unit tests pass, sideload a package, apply a package from sdcard Change-Id: If8311666a52a2e3c0fbae0ee9688fa6d01e4ad09
2019-01-02minadbd: daemon_service_to_fd takes std::string_view.Tao Bao2-7/+9
The caller of daemon_service_to_fd() in core adb has switched to std::string_view in [1]. The mismatch breaks the sideload service, as it picks up the wrong daemon_service_to_fd() when serving sideload. [1] https://android-review.googlesource.com/c/platform/system/core/+/850392 Bug: 122171762 Test: `adb sideload` on taimen. Change-Id: Ie828400768523c35c5576e2c029e38fc0ad0aff9
2018-12-03C++17 is the default now.Elliott Hughes1-1/+0
Test: builds Change-Id: I91923da25f470621189589711c50f3d67e435c68
2018-11-13minadbd: track adb C++ version change.Josh Gao1-0/+1
adb is going to start using shiny new C++17 features like std::optional in headers that minadbd includes. Test: mma Change-Id: I7eb100c48abbf2364d6ff5f30aa223480e2466a6
2018-10-01Move to new isolation test runner.Christopher Ferris1-1/+1
Test: Ran tests. Change-Id: I5fa99f7b6b03c7b9247b4f340f3df982063b0e3e
2018-09-27Allow OTA package size larger than 2GiB(2147483647 bytes) on sideload.katao1-10/+11
At present, multiple partitions such as vendor have been added, which reduces the coupling between mobile phone manufacturers and Android systems. However, it may increase the generated package size substantially (e.g. from ~200MB to ~800MB). Causes the package size to exceed the int limit (2147483647 bytes). Change the int length parameters to long. Bug: http://b/112003354 Test: adb sideload ota.zip (ota.zip bigger than 2147483647 bytes) Change-Id: Ifb656431f7b961ac0e91754107578dc8b89ff14e Signed-off-by: katao <katao@xiaomi.com>
2018-08-13Reland "Build and use minadbd as a shared library."Tao Bao1-9/+9
This relands the previously reverted CL in commit c70446ce7b4db79f296833b16ce38eb8a01d83df ("Build and use minadbd as a shared library."). `recovery` has been built with Soong, so the previous concern (unintentionally installing `libminadbd_services.so` to normal system image) no longer holds. Note that `reocvery` can't use `libminadbd_services.a`, as functions like `daemon_service_to_fd()` (needed by `libadbd.so`) won't be linked into `recovery`. This CL moves the dependency of `libminadbd_services` from `librecovery` into `recovery`, as only the latter actually relies on it (via `recovery_main.cpp`). Note that we no longer need to list the transitive dependency on `libadbd` or `libasyncio`. Bug: 112494634 Test: `mmma -j bootable/recovery` Test: Build and boot into recovery with aosp_taimen-userdebug. Verify that sideloading keeps working. Test: `build/soong/build_test.bash --dist` Change-Id: Ic086470b86d6770bede317e0f5534f608fa7b7d2
2018-08-10Build `recovery` with Soong.Tao Bao1-0/+1
Fixes: 110380063 Test: `mmma -j bootable/recovery` with aosp_taimen-userdebug Test: Build and boot into recovery on taimen. Check the basic functionalities (`Apply update from ADB`, `View recovery logs`, `Run graphics test`). Test: Run recovery_unit_test and recovery_component_test on marlin. Test: Modify `recovery.cpp` locally to trigger the call to is_battery_ok(). Check that the battery info is reported correctly. Test: `build/soong/build_test.bash --dist` Change-Id: I391eb201d57c760e457ba2bf2410ceb72596795c
2018-08-08Revert "Build and use minadbd as a shared library."Tao Bao1-9/+7
This reverts commit 4fd4f89591fe826cf26167bccaeb2802f14fbdc8. The reverted CL has a side effect that unintentionally installs a copy of libminadbd_services.so to the system image. This breaks the check with `build/soong/build_test.bash --dist` which detects and prevents vendor modules from installing files to the system image. Prior to fully converting `recovery` to be built with Soong, we have to statically link recovery-specific modules into `recovery`. Bug: 110380063 Test: `m -j bootimage` with aosp_marlin-userdebug Test: Run minadbd_test on marlin. Test: Boot into recovery and verify that sideloading still works. Test: `build/soong/build_test.bash --dist` Change-Id: I290d55c82e17aa60a5afdf2ff7f896afc4dae8b3
2018-08-07Build and use minadbd as a shared library.Tao Bao1-7/+9
The former `minadbd` module is now built as a shared library (`libminadbd_services.so`) that serves sideloading under recovery, with a dynamic dependency on `libadbd.so`. This allows sharing and reusing libadbd code on device (both of `adbd` and `recovery` now uses `libadbd.so`). As a result, it reduces the size of `recovery` binary from 1407360-byte to (1272880 + 33032)-byte (aosp_marlin-userdebug). Bug: 78793464 Test: `m -j bootimage` with aosp_marlin-userdebug Test: Run minadbd_test on marlin. Test: Boot into recovery and verify that sideloading still works. Change-Id: I6c2bc3d351d5af71220a9b9f956c8c039e52c781
2018-07-27minadbd: avoid overrriding services_to_fd.Josh Gao1-22/+8
Previously, we were relying on linker ordering pulling in minadbd's copy of services_to_fd instead of libadbd's, which breaks when we switch to dynamically linking. Separate out libadbd's services into a separate function that's in a file that isn't built into libadbd, so that we can provide our own here. Bug: http://b/111831478 Test: mma Change-Id: I2479947b2d81db5e750020fffc2c2c770cb31a78
2018-07-23Revert "Make recovery libraries shared / recovery_available"Hridya Valsaraju1-5/+3
This reverts commit c936a6961940a15f7f95befcf35425bad8fa4f7c. Reason for revert: b/111734137 Change-Id: Ie9c1fdc75d6e87dba7019c4e6d1799af25c2f94a
2018-07-20Make recovery libraries shared / recovery_availableJerry Zhang1-3/+5
Test: compiles Bug: 78793464 Change-Id: Iff64bc1a597e70f749a9d825f7d386baa427be3d Merged-In: Iff64bc1a597e70f749a9d825f7d386baa427be3d (cherry picked from commit 92969c49dce519803ed0a1986781c474b1bbc82f)
2018-07-20Make recovery libraries shared / recovery_availableJerry Zhang1-3/+5
Test: compiles Bug: 78793464 Change-Id: Iff64bc1a597e70f749a9d825f7d386baa427be3d
2018-04-14minadbd: track signature change of service_to_fd.Josh Gao1-1/+1
Bug: http://b/37066218 Bug: http://b/71898863 Test: treehugger Change-Id: I5f2b14c65cff8d41dd3230d78b87e3e27e489bf6 (cherry picked from commit 570b08b7904901162ae2d4c847b19c1aa9738aaf)
2018-04-14minadbd: track signature change of service_to_fd.Josh Gao1-1/+1
Bug: http://b/37066218 Bug: http://b/71898863 Test: treehugger Change-Id: I5f2b14c65cff8d41dd3230d78b87e3e27e489bf6
2018-03-07Export fuse_sideload.h for libfusesideload.Tao Bao1-1/+1
Move the module into a separate directory so that we can export only the expected header. With this change, minadbd no longer needs to include bootable/recovery. Test: mmma -j bootable/recovery Change-Id: I69b888ceb160a33a67d79c5bda208dc17ad6ed86
2018-03-07minadbd: Move to Soong.Tao Bao2-55/+78
Test: mmma -j bootable/recovery Change-Id: Ic4cd676a842f0e8c4735cc6731fcbf13b844510c
2017-11-15minadbd: Remove two warning options.Tao Bao1-3/+1
'-Wimplicit-function-declaration' is not needed (it's for C89) and already enabled by -Wall. For '-Wno-missing-field-initializers', don't see any existing case that requires the flag. Test: `mmma -j bootable/recovery` on aosp_{bullhead,marlin}-userdebug. Change-Id: I46604723087ed9a7747f6cae31a95fc0074c6758
2017-11-04Clean up fuse_sideload and add a testcase.Tao Bao3-35/+32
This CL mainly changes: a) moving the interface in struct provider_vtab to std::function; b) code cleanup, such as moving the declaration closer to the uses, using explicit type conversion. Test: recovery_component_test Test: minadbd_test Test: Sideload a package on marlin. Change-Id: Id0e3c70f1ada54a4cd985b54c84438c23ed4687e
2017-11-03Switch to bionic gtest in bootable/recoveryTianjie Xu1-2/+7
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
2017-10-12Drop -Wno-unused-parameter.Tao Bao2-16/+31
The only one left is libedify. Will handle that in a separate CL. Test: mmma bootable/recovery Change-Id: I732a5f85229da90fd767bee2e46c5c95f529c396
2017-07-25Remove LOCAL_CLANGLennart Wieboldt1-2/+0
clang is the default compiler since Android nougat Change-Id: I930bba431dc49970cb4491ed5fcf44b5e00e97df Signed-off-by: Lennart Wieboldt <lennart.1997@gmx.de>
2017-04-25minadbd: Fix a failing test due to SIGPIPE.Tao Bao1-9/+11
Test: minadbd_test on bullhead. Change-Id: Iab1c51ba8d3113a83e8b464c3640be770a6cda97
2017-04-19Minor clean up to minadbd_services.cppTianjie Xu1-9/+7
Switch some function signatures to std::string to avoid memory leak. Bug: 30039381 Test: sideload a package on angler Change-Id: Iae1e75871a782d6e5d6dde5dcf3f18469eb63f7d
2017-04-13minadbd: switch adb_thread_create to std::thread.Josh Gao1-27/+3
Test: treehugger Change-Id: I7edcb13eb1fc6d4f36f5a764a1b647fbf9cd063e
2017-03-29Add test config to minadbd_testDan Shi2-0/+27
Design doc: Generalized Suites & the Unification of APCT & CTS Workflows Design/Roadmap https://docs.google.com/document/d/1eabK3srlBLouMiBMrNP3xJPiRRdcoCquNxC8gBWPvx8/edit#heading=h.78vup5eivwzo Details about test configs changes are tracked in doc https://docs.google.com/document/d/1EWUjJ7fjy8ge_Nk0YQbFdRp8DSHo3z6GU0R8jLgrAcw/edit# Bug: 35882476 Test: local test Change-Id: I51e1b410536469d254ae7a353bc61a7df06c8324
2017-01-09Address review comment.Elliott Hughes1-1/+1
Bug: N/A Test: N/A Change-Id: I9467286e57522c6ed640a3599cb678ac10d9e2a4
2017-01-07Move to .md files for even trivial documentation.Elliott Hughes1-0/+0
So it's automatically displayed for folks browsing the source. Bug: N/A Test: N/A Change-Id: Ie9b190072ebdf0faf06cc1fd7b3467c031056753
2016-11-16Use static_cast to cast pointers returned by malloc/calloc/realloc/mmap.Rahul Chaudhry1-1/+1
static_cast is preferable to reinterpret_cast when casting from void* pointers returned by malloc/calloc/realloc/mmap calls. Discovered while looking at compiler warnings (b/26936282). Test: WITH_TIDY=1 WITH_STATIC_ANALYZER=1 mma Change-Id: Iaffd537784aa857108f6981fdfd82d0496eb5592 Merged-In: I151642d5a60c94f312d0611576ad0143c249ba3d
2016-11-09Use static_cast to cast pointers returned by malloc/calloc/realloc/mmap.Rahul Chaudhry1-1/+1
static_cast is preferable to reinterpret_cast when casting from void* pointers returned by malloc/calloc/realloc/mmap calls. Discovered while looking at compiler warnings (b/26936282). Test: WITH_TIDY=1 WITH_STATIC_ANALYZER=1 mma Change-Id: I151642d5a60c94f312d0611576ad0143c249ba3d
2016-08-30minadbd: rename adb_server_main to minadbd_main.Josh Gao3-2/+26
adb_server_main in adb refers to the adb server on the host, not adbd. Since there doesn't seem to be a good reason to reuse the declaration from adb's headers, give minadbd a main function of its own. Change-Id: I748f1a6822dc14c726cb73ef3b533c57a6615608
2016-08-10adb headers now refer to openssl headers.Elliott Hughes1-1/+1
Change-Id: Icddc4a4f226595338fafbcb14ee9338c58b4a80f
2016-06-17Minor minadbd cleanup.Elliott Hughes4-8/+3
Distinguish our "services.cpp" more clearly from the regular adbd "services.cpp", and remove a few useless includes of "sysdeps.h". Change-Id: Ided4945a3ac5916133322ca7e95fa51add9abaa4
2016-02-23minadbd: update for adb_thread_create signature change.Josh Gao1-2/+1
Change-Id: Ifa0b4d8c1cf0bb39abac61984ff165e82e41222c (cherry picked from commit cc07b3556510d03e389a8994a8e5dbed3f3bbbb4)
2016-02-13minadbd: update for adb_thread_create signature change.Josh Gao1-2/+1
Change-Id: Ifa0b4d8c1cf0bb39abac61984ff165e82e41222c
2015-11-20Track name change from adb_main to adb_server_main.Elliott Hughes1-1/+1
Change-Id: I835805348a9817c81639ad8471e3b49cae93c107
2015-11-16recovery: Switch to clangTao Bao1-0/+1
And a few trival fixes to suppress warnings. Change-Id: Id28e3581aaca4bda59826afa80c0c1cdfb0442fc (cherry picked from commit 80e46e08de5f65702fa7f7cd3ef83f905d919bbc)
2015-09-30minadbd: use strdup() to create argument for sideload thread.Yabin Cui1-2/+4
So sideload thread will not use argument which is to be freed in the main thread. Bug: 23968770 Change-Id: I9d6dadc6c33cfbe4b5759382a80fe14cd0d54355
2015-09-24minadbd: move from D() to VLOG().Yabin Cui2-5/+2
Change-Id: I542e2ae8f5ef18b2d6b3dbc1888b3ce1e02a7404
2015-09-04minadbd: update service_to_fd() signature.David Pursell1-1/+1
No functional change, just matching the signature to an adb change. See https://android-review.googlesource.com/#/c/169601/. Change-Id: Ic826864e126054849b3a4d193ded8acc5ee5269c
2015-08-07Fix recovery image build.Elliott Hughes1-1/+1
A recent adb cleanup changed the signature of adb_main. Change-Id: I98d084f999966f1a7aa94c63e9ed996b3375096d
2015-06-23Allow sideloading without authentication.Elliott Hughes1-1/+5
Bug: http://b/22025550 Change-Id: I20f09ae442536f924f19ede0abf6a2bcc0a5cedf (cherry picked from commit 9813f5ba57fe7d90d45cb1c2b6f65920ce580e72)
2015-06-23Allow sideloading without authentication.Elliott Hughes1-1/+5
Bug: http://b/22025550 Change-Id: I20f09ae442536f924f19ede0abf6a2bcc0a5cedf
2015-06-03recovery: Switch to clangTao Bao1-0/+1
And a few trival fixes to suppress warnings. Change-Id: I38734b5f4434643e85feab25f4807b46a45d8d65
2015-05-08Fix build following adb change.Dan Albert1-5/+1
Change-Id: I2e0fb7e880e205b0bca324ff53ffdb5df9e34baf
2015-05-05Track adb_thread_create API change.Elliott Hughes1-4/+2
Change-Id: Ia3f30f3ba85c0246d4b667fb7723cfcdce299d4a
2015-05-02Fix mips64 minadbd_test build.Elliott Hughes1-1/+1
Looks like the mips64 linker isn't as good as the others at GCing unused stuff, which means it needs libcutils. Change-Id: I5f768e44514350fb81e5360351db3e9cc4201702 (cherry picked from commit dbb20c48633e63c7c244e84f3fea76e083e225d7)
2015-05-02Fix mips64 minadbd_test build.Elliott Hughes1-1/+1
Looks like the mips64 linker isn't as good as the others at GCing unused stuff, which means it needs libcutils. Change-Id: I5f768e44514350fb81e5360351db3e9cc4201702
2015-05-02Move minadb over to new API.Elliott Hughes2-13/+9
Change-Id: I889bcf2222245c7665287513669cae8831e37081 (cherry picked from commit 4039933c62f52dda06e6f355cf42ac9b392d0888)
2015-05-02Fix minadb_test build breakage.Elliott Hughes1-1/+1
Change-Id: I98bb900debb7d7dd57d3f8f84d605163ec192b03 (cherry picked from commit 3e7d82c621240bb80f9882c64377c4f5f3d97c7b)
2015-05-02Fix minadb_test build breakage.Elliott Hughes1-1/+1
Change-Id: I98bb900debb7d7dd57d3f8f84d605163ec192b03
2015-05-02Move minadb over to new API.Elliott Hughes2-14/+10
Change-Id: I889bcf2222245c7665287513669cae8831e37081
2015-04-28Stop using adb_strtok, and check argument validity.Elliott Hughes1-9/+10
(cherry picked from commit ba45ddf37cf4543143af6b2e27fc1214f3dbe892) Change-Id: Iba4f77f7db54ca0184437bd8ea96abfadabc72a3
2015-04-28Stop using adb_strtok, and check argument validity.Elliott Hughes1-9/+10
Change-Id: I323ffda71b82cc939aed446f9c9fb86ca78df153
2015-04-10Switch minadb over to C++.Elliott Hughes5-27/+12
Change-Id: I5afaf70caa590525627c676c88b445d3162de33e
2015-03-14Remove unused libutils references.Dan Albert2-2/+1
Change-Id: I22797643103ce1d4371198433ad9849cc83d3d7c
2015-02-27Add tests for read_block_adb.Dan Albert4-16/+124
These tests aren't completely representative in that they don't run in the recovery image. We might want to look in to adding a self-test option to the recovery UI. Until then, these can be run on a normal device (which is easier to do anyway). Bug: 19522788 Change-Id: Idb20feb55d10c62905c2480ab1b61a2e4b5f60d8
2015-02-26This read accidentally got turned in to a write.Dan Albert1-1/+1
Too many mechanical changes in a row... Bug: 19522788 Change-Id: Ic451792aab2700cdbdbb64529b99ff5f567918ad
2015-02-26Fix readx/writex names.Dan Albert1-4/+6
Change-Id: I9556960b8293ea0e81def8b73f88edadb68841e3
2015-02-25Fix LP64 build for minadbd.Narayan Kamath1-2/+2
services.c:57:12: error: format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type 'uint64_t' [-Werror=format=] Change-Id: Ieba691bf9e7a30c8bb38f4e1f36e86b6ea3f8c80
2015-02-25Remove _(GNU|XOPEN)_SORUCE makefile cruft.Dan Albert1-2/+0
None of the functions needing these are used. Change-Id: Ibe3ca24d993788bf2f1108bac8417a7094ef386b
2015-02-25Fix build from implicit declaration.Dan Albert4-18/+23
Turn the warning on by default and turn on -Werror so this doesn't happen next time. Change-Id: Id65bf0cb63bbf0ff224655b425463ae2f55435df
2015-02-20Kill of most of the remainder of minadbd.Dan Albert6-1573/+7
I think everything left now is here to stay (services.c might get massaged in to libadbd if it gets refactored). Bug: 17626262 Change-Id: I01faf8b277a601a40e3a0f4c3b8206c97f1d2ce6
2015-02-19Move adb_main to its own file.Dan Albert3-30/+42
Change-Id: Ia5150e1ef8be5a8f2d2da0fdca9383e22218f4ac
2015-02-19Remove dead code.Dan Albert1-38/+0
This code doesn't exist in the normal adb, so it just makes it harder to diff the two. Change-Id: Ibb21b49bb9944c4245199536cbe88e8a107cf00d
2015-02-19Use headers from adb.Dan Albert6-660/+3
adb.h has diverged a bit, so that one will be more involved, but these three are all trivial, unimportant changes. Change-Id: Ief8474c1c2927d7e955adf04f887c76ab37077a6
2015-02-19Remove unused code.Dan Albert3-183/+0
Change-Id: Ie37734e75bc4d1e284dcb5dee4c0512021663dbd
2015-02-19Lose USB transport code to libadb.Dan Albert5-1469/+2
Bug: 17626262 Change-Id: If41031ba20a3a75fa510f155c654a482b47e409d
2015-02-18Add extern "C" to all the headers.Dan Albert6-0/+52
Change-Id: Idc249ff1b199b7c455f90092ff2c8a48b539faf4
2015-01-30Add missing includes.Elliott Hughes1-0/+1
Change-Id: I06ea08400efa511e627be37a4fd70fbdfadea2e6
2015-01-26Fix the v2 descriptor handling.Christopher Ferris1-11/+6
There was a misinterpretation of how the v2 header works. The flags in the header indicate what is in the rest of the structure. Bug: 19127803 Change-Id: I83fd93df1df196300a80ddeb3b49ca7851ffcfb8
2015-01-26adbd: Support for new f_fs descriptor formatBadhri Jagan Sridharan1-54/+107
The patch "[RFC] usb: gadget: f_fs: Add flags to descriptors block" marks the current usb_functionfs_descs_head format deprecated and introduces support for sending SuperSpeed descriptors. This CL makes adbd to send Descriptors in the new format. Adbd would fall back to the old format, if kernel is not able to recognize the new format. This is done to prevent adbd from breaking in the older versions of the kernel. Bug: 17394972 (cherry picked from commit b5b43043fa71f9cb620ddd02ec2bc98eced5a6ce) Change-Id: I5af9dc9d4f41ad47d678279054a648f69497b24e
2014-11-25Start losing code to libadb.Dan Albert2-698/+0
Bug: 17626262 Change-Id: I8ce7cff2b7789f39f35a4211d7120d072c05a863
2014-11-13kill HAVE_FORKEXECYabin Cui1-1/+1
Bug: 18317407 Change-Id: Idd4e0effa96752e2c0ca959728f80df4d2d34187
2014-10-28adbd: Support for new f_fs descriptor formatBadhri Jagan Sridharan1-54/+107
The patch "[RFC] usb: gadget: f_fs: Add flags to descriptors block" marks the current usb_functionfs_descs_head format deprecated and introduces support for sending SuperSpeed descriptors. This CL makes adbd to send Descriptors in the new format. Adbd would fall back to the old format, if kernel is not able to recognize the new format. This is done to prevent adbd from breaking in the older versions of the kernel. Bug: 17394972 Change-Id: I1acf684ef8a4dcc612ac20b5abe1e27b43901031 Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
2014-09-26Revert "Copy epoll(2) changes to minadb."Dan Albert1-4/+21
This reverts commit db8c959049d21fe63e48c270f1fc12b32a0cf0ec.
2014-09-23Copy epoll(2) changes to minadb.Elliott Hughes1-21/+4
Bug: 17588403 Change-Id: Ib3525824ff09330bd9d6f9e96d662e5a55a20ec2
2014-07-10refactor fuse sideloading codeDoug Zongker6-522/+76
Split the adb-specific portions (fetching a block from the adb host and closing the connections) out from the rest of the FUSE filesystem code, so that we can reuse the fuse stuff for installing off sdcards as well. Change-Id: I0ba385fd35999c5f5cad27842bc82024a264dd14
2014-07-02sideload without holding the whole package in RAMDoug Zongker6-48/+557
Implement a new method of sideloading over ADB that does not require the entire package to be held in RAM (useful for low-RAM devices and devices using block OTA where we'd rather have more RAM available for binary patching). We communicate with the host using a new adb service called "sideload-host", which makes the host act as a server, sending us different parts of the package file on request. We create a FUSE filesystem that creates a virtual file "/sideload/package.zip" that is backed by the ADB connection -- users see a normal file, but when they read from the file we're actually fetching the data from the adb host. This file is then passed to the verification and installation systems like any other. To prevent a malicious adb host implementation from serving different data to the verification and installation phases of sideloading, the FUSE filesystem verifies that the contents of the file don't change between reads -- every time we fetch a block from the host we compare its hash to the previous hash for that block (if it was read before) and cause the read to fail if it changes. One necessary change is that the minadbd started by recovery in sideload mode no longer drops its root privileges (they're needed to mount the FUSE filesystem). We rely on SELinux enforcement to restrict the set of things that can be accessed. Change-Id: Ida7dbd3b04c1d4e27a2779d88c1da0c7c81fb114
2014-03-14Recovery 64-bit compile issuesMark Salyzyn3-4/+5
Change-Id: I92d5abd1a628feab3b0246924fab7f97ba3b9d34
2014-02-06recovery: fix building with pointer-to-int errors turned onColin Cross1-2/+2
Use intptr_t/uintptr_t to cast between pointer and int to allow building with -Werror=pointer-to-int-cast and Werror=int-to-pointer-cast turned on. Cast to char* instead of unsigned int for pointer arithmetic. Change-Id: Ia862306fdcca53866b330e8cf726f3d62f2248a0
2014-01-24minadbd: remove dead codeColin Cross2-25/+0
Change-Id: Ia1f34a17ae582575f8cd3514ed7bc015b0a5006e
2014-01-17ADB sideload command not workDa Zhou3-11/+358
In kernel(3.10) USB ADB gadget driver is removed. Using Functionfs for USB adb gadget. Android recovery uses a stripped down version of adb command for sideload only. It's missing the ffs function support, so add the ffs support to allow sideload command to work b/12608946 Change-Id: I4ad024723dfc5bdb544548391f99637c390b171e Signed-off-by: Pierre Couillaud <pierre@broadcom.com>
2013-03-01minadbd: remove unnecessary header files.Nick Kralevich1-2/+0
Change-Id: Iff2b53d9e63b279d0262cd2e9cfb11e0ca4d6b42
2013-01-09exit instead of return if sideload file creation failsEthan Yonker1-1/+1
A return here leaves adb sideload in a permanent loop. An exit is more appropriate for this error. Change-Id: I80fb8abae4f6378833aa75f9eaf7ec1acd44b274 Signed-off-by: Ethan Yonker <ethanayonker@gmail.com>
2012-03-20run minadbd as shell user, remove unused codeDoug Zongker8-1171/+37
Make minadbd drop its root privileges after initializing. We need to make the /tmp directory writable by the shell group so that it can drop the sideloaded file there.
2012-03-20remove unused code from minadbdDoug Zongker6-1157/+9
Change-Id: I2f192c67ef425a53a1dba65d3e0544c1d5a567bd
2012-03-20run minadbd as shell userDoug Zongker4-14/+28
Make minadbd drop its root privileges after initializing. We need to make the /tmp directory writable by the shell group so that it can drop the sideloaded file there. Change-Id: I67b292cf769383f0f67fb934e5a80d408a4c131d
2012-01-18support "sideload over ADB" modeDoug Zongker16-0/+5529
Rather than depending on the existence of some place to store a file that is accessible to users on an an unbootable device (eg, a physical sdcard, external USB drive, etc.), add support for sideloading packages sent to the device with adb. This change adds a "minimal adbd" which supports nothing but receiving a package over adb (with the "adb sideload" command) and storing it to a fixed filename in the /tmp ramdisk, from where it can be verified and sideloaded in the usual way. This should be leave available even on locked user-build devices. The user can select "apply package from ADB" from the recovery menu, which starts minimal-adb mode (shutting down any real adbd that may be running). Once minimal-adb has received a package it exits (restarting real adbd if appropriate) and then verification and installation of the received package proceeds. always initialize usb product, vendor, etc. for adb in recovery Set these values even on non-debuggable builds, so that the mini-adb now in recovery can work.
2012-01-10support "sideload over ADB" modeDoug Zongker16-0/+5529
Rather than depending on the existence of some place to store a file that is accessible to users on an an unbootable device (eg, a physical sdcard, external USB drive, etc.), add support for sideloading packages sent to the device with adb. This change adds a "minimal adbd" which supports nothing but receiving a package over adb (with the "adb sideload" command) and storing it to a fixed filename in the /tmp ramdisk, from where it can be verified and sideloaded in the usual way. This should be leave available even on locked user-build devices. The user can select "apply package from ADB" from the recovery menu, which starts minimal-adb mode (shutting down any real adbd that may be running). Once minimal-adb has received a package it exits (restarting real adbd if appropriate) and then verification and installation of the received package proceeds. Change-Id: I6fe13161ca064a98d06fa32104e1f432826582f5