summaryrefslogtreecommitdiffstats
path: root/minadbd (follow)
Commit message (Collapse)AuthorAgeFilesLines
* minadbd: Support `adb reboot` under sideload/rescue modes.Tao Bao2019-04-243-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
* Add test for minadbdxunchang2019-04-234-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
* minadbd: Support rescue install and getprop commands.Tao Bao2019-04-195-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
* Allow entering rescue mode via recovery UI.Tao Bao2019-04-173-2/+18
| | | | | | | | | Only enabled on debuggable builds. Bug: 128415917 Test: Sideload package on taimen. Test: Choose "Enter rescue" from recovery UI. Change-Id: I913dbdbcffd3179e6fa72ca862f74ca8f1364b02
* Remove the FD parameter from FuseDataProvider ctor.Tao Bao2019-04-162-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
* Add socket communication between recovery and minadbdxunchang2019-04-115-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
* Remove the provider_vtabxunchang2019-03-193-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
* Create a FuseDataProvider base classxunchang2019-03-195-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
* minadbd: daemon_service_to_fd takes std::string_view.Tao Bao2019-01-022-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
* C++17 is the default now.Elliott Hughes2018-12-031-1/+0
| | | | | Test: builds Change-Id: I91923da25f470621189589711c50f3d67e435c68
* minadbd: track adb C++ version change.Josh Gao2018-11-131-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
* Move to new isolation test runner.Christopher Ferris2018-10-011-1/+1
| | | | | Test: Ran tests. Change-Id: I5fa99f7b6b03c7b9247b4f340f3df982063b0e3e
* Allow OTA package size larger than 2GiB(2147483647 bytes) on sideload.katao2018-09-271-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>
* Reland "Build and use minadbd as a shared library."Tao Bao2018-08-131-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
* Build `recovery` with Soong.Tao Bao2018-08-101-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
* Revert "Build and use minadbd as a shared library."Tao Bao2018-08-081-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
* Build and use minadbd as a shared library.Tao Bao2018-08-071-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
* minadbd: avoid overrriding services_to_fd.Josh Gao2018-07-271-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
* minadbd: track signature change of service_to_fd.Josh Gao2018-04-141-1/+1
| | | | | | | Bug: http://b/37066218 Bug: http://b/71898863 Test: treehugger Change-Id: I5f2b14c65cff8d41dd3230d78b87e3e27e489bf6
* Export fuse_sideload.h for libfusesideload.Tao Bao2018-03-071-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
* minadbd: Move to Soong.Tao Bao2018-03-072-55/+78
| | | | | Test: mmma -j bootable/recovery Change-Id: Ic4cd676a842f0e8c4735cc6731fcbf13b844510c
* minadbd: Remove two warning options.Tao Bao2017-11-151-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
* Merge "Switch to bionic gtest in bootable/recovery"Tianjie Xu2017-11-061-2/+7
|\
| * Switch to bionic gtest in bootable/recoveryTianjie Xu2017-11-031-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
* | Clean up fuse_sideload and add a testcase.Tao Bao2017-11-043-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
* Drop -Wno-unused-parameter.Tao Bao2017-10-122-16/+31
| | | | | | | The only one left is libedify. Will handle that in a separate CL. Test: mmma bootable/recovery Change-Id: I732a5f85229da90fd767bee2e46c5c95f529c396
* Remove LOCAL_CLANGLennart Wieboldt2017-07-251-2/+0
| | | | | | | clang is the default compiler since Android nougat Change-Id: I930bba431dc49970cb4491ed5fcf44b5e00e97df Signed-off-by: Lennart Wieboldt <lennart.1997@gmx.de>
* minadbd: Fix a failing test due to SIGPIPE.Tao Bao2017-04-251-9/+11
| | | | | Test: minadbd_test on bullhead. Change-Id: Iab1c51ba8d3113a83e8b464c3640be770a6cda97
* Minor clean up to minadbd_services.cppTianjie Xu2017-04-191-9/+7
| | | | | | | | Switch some function signatures to std::string to avoid memory leak. Bug: 30039381 Test: sideload a package on angler Change-Id: Iae1e75871a782d6e5d6dde5dcf3f18469eb63f7d
* minadbd: switch adb_thread_create to std::thread.Josh Gao2017-04-131-27/+3
| | | | | Test: treehugger Change-Id: I7edcb13eb1fc6d4f36f5a764a1b647fbf9cd063e
* Add test config to minadbd_testDan Shi2017-03-292-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
* Address review comment.Elliott Hughes2017-01-091-1/+1
| | | | | | Bug: N/A Test: N/A Change-Id: I9467286e57522c6ed640a3599cb678ac10d9e2a4
* Move to .md files for even trivial documentation.Elliott Hughes2017-01-071-0/+0
| | | | | | | | So it's automatically displayed for folks browsing the source. Bug: N/A Test: N/A Change-Id: Ie9b190072ebdf0faf06cc1fd7b3467c031056753
* Use static_cast to cast pointers returned by malloc/calloc/realloc/mmap.Rahul Chaudhry2016-11-161-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
* minadbd: rename adb_server_main to minadbd_main.Josh Gao2016-08-303-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
* adb headers now refer to openssl headers.Elliott Hughes2016-08-101-1/+1
| | | | Change-Id: Icddc4a4f226595338fafbcb14ee9338c58b4a80f
* Minor minadbd cleanup.Elliott Hughes2016-06-174-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
* minadbd: update for adb_thread_create signature change.Josh Gao2016-02-131-2/+1
| | | | Change-Id: Ifa0b4d8c1cf0bb39abac61984ff165e82e41222c
* Track name change from adb_main to adb_server_main.Elliott Hughes2015-11-201-1/+1
| | | | Change-Id: I835805348a9817c81639ad8471e3b49cae93c107
* minadbd: use strdup() to create argument for sideload thread.Yabin Cui2015-09-301-2/+4
| | | | | | | | So sideload thread will not use argument which is to be freed in the main thread. Bug: 23968770 Change-Id: I9d6dadc6c33cfbe4b5759382a80fe14cd0d54355
* minadbd: move from D() to VLOG().Yabin Cui2015-09-242-5/+2
| | | | Change-Id: I542e2ae8f5ef18b2d6b3dbc1888b3ce1e02a7404
* minadbd: update service_to_fd() signature.David Pursell2015-09-041-1/+1
| | | | | | | No functional change, just matching the signature to an adb change. See https://android-review.googlesource.com/#/c/169601/. Change-Id: Ic826864e126054849b3a4d193ded8acc5ee5269c
* Fix recovery image build.Elliott Hughes2015-08-071-1/+1
| | | | | | A recent adb cleanup changed the signature of adb_main. Change-Id: I98d084f999966f1a7aa94c63e9ed996b3375096d
* Allow sideloading without authentication.Elliott Hughes2015-06-231-1/+5
| | | | | Bug: http://b/22025550 Change-Id: I20f09ae442536f924f19ede0abf6a2bcc0a5cedf
* recovery: Switch to clangTao Bao2015-06-031-0/+1
| | | | | | And a few trival fixes to suppress warnings. Change-Id: I38734b5f4434643e85feab25f4807b46a45d8d65
* Fix build following adb change.Dan Albert2015-05-081-5/+1
| | | | Change-Id: I2e0fb7e880e205b0bca324ff53ffdb5df9e34baf
* Track adb_thread_create API change.Elliott Hughes2015-05-051-4/+2
| | | | Change-Id: Ia3f30f3ba85c0246d4b667fb7723cfcdce299d4a
* Fix mips64 minadbd_test build.Elliott Hughes2015-05-021-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
* Move minadb over to new API.Elliott Hughes2015-05-022-14/+10
| | | | Change-Id: I889bcf2222245c7665287513669cae8831e37081
* Stop using adb_strtok, and check argument validity.Elliott Hughes2015-04-281-9/+10
| | | | Change-Id: I323ffda71b82cc939aed446f9c9fb86ca78df153
* Switch minadb over to C++.Elliott Hughes2015-04-105-27/+12
| | | | Change-Id: I5afaf70caa590525627c676c88b445d3162de33e
* Remove unused libutils references.Dan Albert2015-03-142-2/+1
| | | | Change-Id: I22797643103ce1d4371198433ad9849cc83d3d7c
* Add tests for read_block_adb.Dan Albert2015-02-274-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
* This read accidentally got turned in to a write.Dan Albert2015-02-261-1/+1
| | | | | | | Too many mechanical changes in a row... Bug: 19522788 Change-Id: Ic451792aab2700cdbdbb64529b99ff5f567918ad
* Fix readx/writex names.Dan Albert2015-02-261-4/+6
| | | | Change-Id: I9556960b8293ea0e81def8b73f88edadb68841e3
* Merge "Remove _(GNU|XOPEN)_SORUCE makefile cruft."Dan Albert2015-02-251-2/+0
|\
| * Remove _(GNU|XOPEN)_SORUCE makefile cruft.Dan Albert2015-02-251-2/+0
| | | | | | | | | | | | None of the functions needing these are used. Change-Id: Ibe3ca24d993788bf2f1108bac8417a7094ef386b
* | Fix LP64 build for minadbd.Narayan Kamath2015-02-251-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
* Fix build from implicit declaration.Dan Albert2015-02-254-18/+23
| | | | | | | Turn the warning on by default and turn on -Werror so this doesn't happen next time. Change-Id: Id65bf0cb63bbf0ff224655b425463ae2f55435df
* Kill of most of the remainder of minadbd.Dan Albert2015-02-206-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
* Move adb_main to its own file.Dan Albert2015-02-193-30/+42
| | | | Change-Id: Ia5150e1ef8be5a8f2d2da0fdca9383e22218f4ac
* Remove dead code.Dan Albert2015-02-191-38/+0
| | | | | | | This code doesn't exist in the normal adb, so it just makes it harder to diff the two. Change-Id: Ibb21b49bb9944c4245199536cbe88e8a107cf00d
* Use headers from adb.Dan Albert2015-02-196-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
* Remove unused code.Dan Albert2015-02-193-183/+0
| | | | Change-Id: Ie37734e75bc4d1e284dcb5dee4c0512021663dbd
* Lose USB transport code to libadb.Dan Albert2015-02-195-1469/+2
| | | | | Bug: 17626262 Change-Id: If41031ba20a3a75fa510f155c654a482b47e409d
* Add extern "C" to all the headers.Dan Albert2015-02-186-0/+52
| | | | Change-Id: Idc249ff1b199b7c455f90092ff2c8a48b539faf4
* Add missing includes.Elliott Hughes2015-01-301-0/+1
| | | | Change-Id: I06ea08400efa511e627be37a4fd70fbdfadea2e6
* Merge "Start losing code to libadb."Dan Albert2015-01-272-698/+0
|\
| * Start losing code to libadb.Dan Albert2014-11-252-698/+0
| | | | | | | | | | Bug: 17626262 Change-Id: I8ce7cff2b7789f39f35a4211d7120d072c05a863
* | Fix the v2 descriptor handling.Christopher Ferris2015-01-261-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
* | adbd: Support for new f_fs descriptor formatBadhri Jagan Sridharan2015-01-261-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
* kill HAVE_FORKEXECYabin Cui2014-11-131-1/+1
| | | | | Bug: 18317407 Change-Id: Idd4e0effa96752e2c0ca959728f80df4d2d34187
* am 28ffde5e: Merge "Revert "Copy epoll(2) changes to minadb.""Dan Albert2014-09-261-4/+21
|\ | | | | | | | | * commit '28ffde5ebd33d5b693906a93087e6eea627cd8d0': Revert "Copy epoll(2) changes to minadb."
| * Revert "Copy epoll(2) changes to minadb."Dan Albert2014-09-261-4/+21
| | | | | | | | This reverts commit db8c959049d21fe63e48c270f1fc12b32a0cf0ec.
* | am 530b61e0: Merge "Copy epoll(2) changes to minadb."Elliott Hughes2014-09-231-21/+4
|\| | | | | | | | | * commit '530b61e0b5f154e5f38853c10a28e0ea6f41c2ca': Copy epoll(2) changes to minadb.
| * Copy epoll(2) changes to minadb.Elliott Hughes2014-09-231-21/+4
| | | | | | | | | | Bug: 17588403 Change-Id: Ib3525824ff09330bd9d6f9e96d662e5a55a20ec2
* | refactor fuse sideloading codeDoug Zongker2014-07-106-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
* | sideload without holding the whole package in RAMDoug Zongker2014-07-026-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
* Merge "exit instead of return if sideload file creation fails"Doug Zongker2014-05-161-1/+1
|\
| * exit instead of return if sideload file creation failsEthan Yonker2013-01-091-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>
* | Recovery 64-bit compile issuesMark Salyzyn2014-03-143-4/+5
| | | | | | | | Change-Id: I92d5abd1a628feab3b0246924fab7f97ba3b9d34
* | Merge "ADB sideload command not work"Doug Zongker2014-02-263-11/+358
|\ \
| * | ADB sideload command not workDa Zhou2014-01-173-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>
* | | recovery: fix building with pointer-to-int errors turned onColin Cross2014-02-061-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
* | | minadbd: remove dead codeColin Cross2014-01-242-25/+0
|/ / | | | | | | Change-Id: Ia1f34a17ae582575f8cd3514ed7bc015b0a5006e
* / minadbd: remove unnecessary header files.Nick Kralevich2013-03-011-2/+0
|/ | | | Change-Id: Iff2b53d9e63b279d0262cd2e9cfb11e0ca4d6b42
* remove unused code from minadbdDoug Zongker2012-03-206-1157/+9
| | | | Change-Id: I2f192c67ef425a53a1dba65d3e0544c1d5a567bd
* run minadbd as shell userDoug Zongker2012-03-204-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
* support "sideload over ADB" modeDoug Zongker2012-01-1016-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