summaryrefslogtreecommitdiffstats
path: root/minadbd (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fix libcrypto dependency in 6.0 treesEthan Yonker2016-09-151-1/+9
| | | | Change-Id: Ie230ed5f3db38a62305e03e4f9819e4aca816e16
* Fix compatibility across the boardEthan Yonker2016-08-263-2/+15
| | | | Change-Id: I6376920775ddabb4d4af505fffd86e404403a64a
* Update to 7.0Ethan Yonker2016-08-243-21/+14
|\ | | | | | | Change-Id: I621cc47352f7ac552d9602485825ae3a6f9ae516
| * minadbd: update for adb_thread_create signature change.Josh Gao2016-02-231-2/+1
| | | | | | | | | | Change-Id: Ifa0b4d8c1cf0bb39abac61984ff165e82e41222c (cherry picked from commit cc07b3556510d03e389a8994a8e5dbed3f3bbbb4)
| * 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
* | Merge up to AOSP marshmallow-releaseEthan Yonker2015-10-0920-4627/+213
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to maintain compatibility with older trees, we now have minadbd.old and minui.old. I had to use a TARGET_GLOBAL_CFLAG to handle ifdef issues in minui/minui.d because healthd includes minui/minui.h and there was no other alternative to make minui.h compatible with older trees without having to modify healthd rules which is outside of TWRP. Note that the new minui does not currently have support for qcom overlay graphics. Support for this graphics mode will likely be added in a later patch set. If you are building in a 6.0 tree and have a device that needs qcom overlay graphics, be warned, as off mode charging may not work properly. A dead battery in this case could potentially brick your device if it is unable to charge as healthd handles charging duties. Update rules for building toolbox and add rules for making toybox Use permissive.sh in init.rc which will follow symlinks so we do not have to worry about what binary is supplying the setenforce functionality (toolbox, toybox, or busybox). Fix a few warnings in the main recovery binary source code. Fix a few includes that were missing that prevented compiling in 6.0 Change-Id: Ia67aa2107d260883da5e365475a19bea538e8b97
| * | Allow sideloading without authentication.Elliott Hughes2015-06-231-1/+5
| | | | | | | | | | | | | | | | | | Bug: http://b/22025550 Change-Id: I20f09ae442536f924f19ede0abf6a2bcc0a5cedf (cherry picked from commit 9813f5ba57fe7d90d45cb1c2b6f65920ce580e72)
| * | 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 (cherry picked from commit dbb20c48633e63c7c244e84f3fea76e083e225d7)
| * | Move minadb over to new API.Elliott Hughes2015-05-022-13/+9
| | | | | | | | | | | | | | | Change-Id: I889bcf2222245c7665287513669cae8831e37081 (cherry picked from commit 4039933c62f52dda06e6f355cf42ac9b392d0888)
| * | Fix minadb_test build breakage.Elliott Hughes2015-05-021-1/+1
| | | | | | | | | | | | | | | Change-Id: I98bb900debb7d7dd57d3f8f84d605163ec192b03 (cherry picked from commit 3e7d82c621240bb80f9882c64377c4f5f3d97c7b)
| * | Stop using adb_strtok, and check argument validity.Elliott Hughes2015-04-281-9/+10
| |/ | | | | | | | | | | (cherry picked from commit ba45ddf37cf4543143af6b2e27fc1214f3dbe892) Change-Id: Iba4f77f7db54ca0184437bd8ea96abfadabc72a3
| * 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
* | | Update adb sideload featureEthan Yonker2014-11-081-1/+1
| | | | | | | | | | | | Change-Id: Ib503d0e87434e1a28430779302d6565211c26592
* | | Fix up libminadbd make fileEthan Yonker2014-11-071-2/+1
| | | | | | | | | | | | Change-Id: I216d59abf9a2e3d074bcbce9ad10f9dd84a2d463
* | | Fix up old libminui to compileEthan Yonker2014-11-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Implement some needed updates to libminui to make it compile for healthd. Note that res_create_multi_display_surface is not fully implemented so healthd may still have issues with displaying some graphics. Will update later when we are able to test these changes. Change-Id: Ic1095a998f5dfe7e36a08384c86da28e0524a03f
* | | Merge in lollipop and attempt to fix merge conflictsEthan Yonker2014-11-069-66/+116
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will probably not compile and may need additional work. For tracking purposes so we know what might still need looking at as none of this has been compiled and tested, here is a list of the merge conflicts that I attempted to fix before pushing this set of changes: git pull aosp lollipop-release remote: Finding sources: 100% (992/992) remote: Total 992 (delta 473), reused 992 (delta 473) Receiving objects: 100% (992/992), 1.51 MiB | 516.00 KiB/s, done. Resolving deltas: 100% (473/473), completed with 42 local objects. From https://android.googlesource.com/platform/bootable/recovery * branch lollipop-release -> FETCH_HEAD * [new branch] lollipop-release -> aosp/lollipop-release Auto-merging verifier_test.cpp CONFLICT (content): Merge conflict in verifier_test.cpp Auto-merging verifier.h CONFLICT (content): Merge conflict in verifier.h Auto-merging verifier.cpp CONFLICT (content): Merge conflict in verifier.cpp Auto-merging updater/updater.c Auto-merging updater/install.c CONFLICT (content): Merge conflict in updater/install.c Auto-merging updater/Android.mk CONFLICT (content): Merge conflict in updater/Android.mk Auto-merging uncrypt/Android.mk CONFLICT (content): Merge conflict in uncrypt/Android.mk Auto-merging ui.cpp CONFLICT (content): Merge conflict in ui.cpp Auto-merging screen_ui.cpp Auto-merging roots.cpp CONFLICT (content): Merge conflict in roots.cpp CONFLICT (rename/delete): res-hdpi/images/progress_fill.png deleted in HEAD and renamed in cddb68b5eafbeba696d5276bda1f1a9f70bbde42. Version cddb68b5eafbeba696d5276bda1f1a9f70bbde42 of res-hdpi/images/progress_fill.png left in tree. CONFLICT (rename/delete): res-hdpi/images/progress_empty.png deleted in HEAD and renamed in cddb68b5eafbeba696d5276bda1f1a9f70bbde42. Version cddb68b5eafbeba696d5276bda1f1a9f70bbde42 of res-hdpi/images/progress_empty.png left in tree. CONFLICT (rename/delete): res-hdpi/images/icon_error.png deleted in HEAD and renamed in cddb68b5eafbeba696d5276bda1f1a9f70bbde42. Version cddb68b5eafbeba696d5276bda1f1a9f70bbde42 of res-hdpi/images/icon_error.png left in tree. Auto-merging recovery.cpp CONFLICT (content): Merge conflict in recovery.cpp Auto-merging minui/resources.c CONFLICT (content): Merge conflict in minui/resources.c Auto-merging minui/minui.h CONFLICT (content): Merge conflict in minui/minui.h Auto-merging minui/graphics.c CONFLICT (content): Merge conflict in minui/graphics.c Auto-merging minui/Android.mk CONFLICT (content): Merge conflict in minui/Android.mk Removing minelf/Retouch.h Removing minelf/Retouch.c Auto-merging minadbd/usb_linux_client.c CONFLICT (content): Merge conflict in minadbd/usb_linux_client.c Auto-merging minadbd/adb.h CONFLICT (content): Merge conflict in minadbd/adb.h Auto-merging minadbd/adb.c CONFLICT (content): Merge conflict in minadbd/adb.c Auto-merging minadbd/Android.mk CONFLICT (content): Merge conflict in minadbd/Android.mk Removing make-overlay.py Auto-merging install.h CONFLICT (content): Merge conflict in install.h Auto-merging etc/init.rc CONFLICT (content): Merge conflict in etc/init.rc Auto-merging bootloader.h Auto-merging applypatch/applypatch.c Auto-merging applypatch/Android.mk CONFLICT (content): Merge conflict in applypatch/Android.mk Auto-merging adb_install.cpp CONFLICT (content): Merge conflict in adb_install.cpp Auto-merging Android.mk CONFLICT (content): Merge conflict in Android.mk Automatic merge failed; fix conflicts and then commit the result. Change-Id: I3e0e03e48ad8550912111c7a5c9a140ed0267e2c
| * | 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
* | | ADB sideload command not workDa Zhou2014-10-073-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>
* | | Update to latest AOSP masterDees_Troy2013-09-041-2/+0
|\| | | | | | | | | | | Merge in latest commits from AOSP master and fix merge conflicts
| * | minadbd: remove unnecessary header files.Nick Kralevich2013-03-011-2/+0
| |/ | | | | | | Change-Id: Iff2b53d9e63b279d0262cd2e9cfb11e0ca4d6b42
* | Move all AOSP code out of recovery binaryDees_Troy2013-04-041-4/+5
| | | | | | | | | | | | Improves license compatibility between GPL and Apache Change-Id: I2b165aa575bb6213af6b07936f99610c113443f0
* | Improve adb sideload - use storage vs tmpDees_Troy2012-09-192-4/+10
|/
* 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