Commit Graph

53 Commits

Author SHA1 Message Date
Ethan Yonker c798c9cd24 Merge up to AOSP marshmallow-release
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
2015-10-09 11:15:29 -05:00
Elliott Hughes c35f3ce30e Allow sideloading without authentication.
Bug: http://b/22025550
Change-Id: I20f09ae442536f924f19ede0abf6a2bcc0a5cedf
(cherry picked from commit 9813f5ba57)
2015-06-23 11:34:07 -07:00
Elliott Hughes 4cf34d5d29 Fix mips64 minadbd_test build.
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 dbb20c4863)
2015-05-01 22:40:06 -07:00
Elliott Hughes 15931924e1 Move minadb over to new API.
Change-Id: I889bcf2222245c7665287513669cae8831e37081
(cherry picked from commit 4039933c62)
2015-05-01 17:35:06 -07:00
Elliott Hughes 87ec73a264 Fix minadb_test build breakage.
Change-Id: I98bb900debb7d7dd57d3f8f84d605163ec192b03
(cherry picked from commit 3e7d82c621)
2015-05-01 17:26:45 -07:00
Elliott Hughes f7466f9f23 Stop using adb_strtok, and check argument validity.
(cherry picked from commit ba45ddf37c)

Change-Id: Iba4f77f7db54ca0184437bd8ea96abfadabc72a3
2015-04-28 10:52:52 -07:00
Elliott Hughes 20531ef605 Switch minadb over to C++.
Change-Id: I5afaf70caa590525627c676c88b445d3162de33e
2015-04-10 13:59:19 -07:00
Dan Albert b2f945932c Remove unused libutils references.
Change-Id: I22797643103ce1d4371198433ad9849cc83d3d7c
2015-03-13 22:33:38 -07:00
Dan Albert ffd6c31a77 Add tests for read_block_adb.
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-26 17:00:11 -08:00
Dan Albert 190977157b This read accidentally got turned in to a write.
Too many mechanical changes in a row...

Bug: 19522788
Change-Id: Ic451792aab2700cdbdbb64529b99ff5f567918ad
2015-02-26 13:57:03 -08:00
Dan Albert 432584fccc Fix readx/writex names.
Change-Id: I9556960b8293ea0e81def8b73f88edadb68841e3
2015-02-25 15:08:15 -08:00
Dan Albert 12fa5191e7 Merge "Remove _(GNU|XOPEN)_SORUCE makefile cruft." 2015-02-25 18:04:55 +00:00
Narayan Kamath 017db6d89e Fix LP64 build for minadbd.
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-25 15:21:28 +00:00
Dan Albert 2404370589 Remove _(GNU|XOPEN)_SORUCE makefile cruft.
None of the functions needing these are used.

Change-Id: Ibe3ca24d993788bf2f1108bac8417a7094ef386b
2015-02-24 22:41:07 -08:00
Dan Albert 8f6eb5c045 Fix build from implicit declaration.
Turn the warning on by default and turn on -Werror so this doesn't
happen next time.

Change-Id: Id65bf0cb63bbf0ff224655b425463ae2f55435df
2015-02-24 22:07:18 -08:00
Dan Albert f3a5726919 Kill of most of the remainder of minadbd.
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-19 15:41:35 -08:00
Dan Albert 9a894b7ece Move adb_main to its own file.
Change-Id: Ia5150e1ef8be5a8f2d2da0fdca9383e22218f4ac
2015-02-19 10:40:17 -08:00
Dan Albert 3efa676fa6 Remove dead code.
This code doesn't exist in the normal adb, so it just makes it harder
to diff the two.

Change-Id: Ibb21b49bb9944c4245199536cbe88e8a107cf00d
2015-02-18 16:44:24 -08:00
Dan Albert 1ddd350504 Use headers from adb.
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-18 16:14:16 -08:00
Dan Albert 2b2a14ff35 Remove unused code.
Change-Id: Ie37734e75bc4d1e284dcb5dee4c0512021663dbd
2015-02-18 15:11:29 -08:00
Dan Albert 8f1bfead3f Lose USB transport code to libadb.
Bug: 17626262
Change-Id: If41031ba20a3a75fa510f155c654a482b47e409d
2015-02-18 15:11:29 -08:00
Dan Albert d808d2194f Add extern "C" to all the headers.
Change-Id: Idc249ff1b199b7c455f90092ff2c8a48b539faf4
2015-02-18 10:21:54 -08:00
Elliott Hughes cd3c55ab40 Add missing includes.
Change-Id: I06ea08400efa511e627be37a4fd70fbdfadea2e6
2015-01-29 20:50:08 -08:00
Dan Albert eaeb55f745 Merge "Start losing code to libadb." 2015-01-27 00:51:09 +00:00
Christopher Ferris 3ed8ef02ed Fix the v2 descriptor handling.
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-26 12:53:20 -08:00
Badhri Jagan Sridharan 9e3cce50a3 adbd: Support for new f_fs descriptor format
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 b5b43043fa)

Change-Id: I5af9dc9d4f41ad47d678279054a648f69497b24e
2015-01-26 12:49:13 -08:00
Dan Albert a01ce3a229 Start losing code to libadb.
Bug: 17626262
Change-Id: I8ce7cff2b7789f39f35a4211d7120d072c05a863
2014-11-25 10:59:42 -08:00
Yabin Cui 678f7d4a36 kill HAVE_FORKEXEC
Bug: 18317407
Change-Id: Idd4e0effa96752e2c0ca959728f80df4d2d34187
2014-11-12 16:51:45 -08:00
Ethan Yonker 24813426b9 Update adb sideload feature
Change-Id: Ib503d0e87434e1a28430779302d6565211c26592
2014-11-07 17:25:46 -06:00
Ethan Yonker bad4e5f50d Fix up libminadbd make file
Change-Id: I216d59abf9a2e3d074bcbce9ad10f9dd84a2d463
2014-11-07 10:19:20 -06:00
Ethan Yonker 304f32fa98 Fix up old libminui to compile
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
2014-11-07 10:14:08 -06:00
Ethan Yonker a167416289 Merge in lollipop and attempt to fix merge conflicts
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 cddb68b5ea.
Version cddb68b5ea 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 cddb68b5ea.
Version cddb68b5ea 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 cddb68b5ea.
Version cddb68b5ea 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
2014-11-06 08:35:13 -06:00
Da Zhou d432deb371 ADB sideload command not work
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>
2014-10-07 20:43:53 +02:00
Dan Albert ea5828a24f am 28ffde5e: Merge "Revert "Copy epoll(2) changes to minadb.""
* commit '28ffde5ebd33d5b693906a93087e6eea627cd8d0':
  Revert "Copy epoll(2) changes to minadb."
2014-09-26 16:12:23 +00:00
Dan Albert f420f8eb63 Revert "Copy epoll(2) changes to minadb."
This reverts commit db8c959049.
2014-09-25 15:12:19 -07:00
Elliott Hughes 78a3027860 am 530b61e0: Merge "Copy epoll(2) changes to minadb."
* commit '530b61e0b5f154e5f38853c10a28e0ea6f41c2ca':
  Copy epoll(2) changes to minadb.
2014-09-23 18:57:39 +00:00
Elliott Hughes db8c959049 Copy epoll(2) changes to minadb.
Bug: 17588403
Change-Id: Ib3525824ff09330bd9d6f9e96d662e5a55a20ec2
2014-09-23 10:50:55 -07:00
Doug Zongker 18a78e0a16 refactor fuse sideloading code
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-10 10:55:07 -07:00
Doug Zongker 075ad800c5 sideload without holding the whole package in RAM
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-07-02 12:16:36 -07:00
Doug Zongker 5fbb729f3e Merge "exit instead of return if sideload file creation fails" 2014-05-16 17:42:12 +00:00
Mark Salyzyn f3bb31c32f Recovery 64-bit compile issues
Change-Id: I92d5abd1a628feab3b0246924fab7f97ba3b9d34
2014-03-14 13:51:39 -07:00
Doug Zongker 2f173bde65 Merge "ADB sideload command not work" 2014-02-26 22:17:57 +00:00
Colin Cross 92cdf9c372 recovery: fix building with pointer-to-int errors turned on
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-02-05 17:34:45 -08:00
Colin Cross e787fee8f2 minadbd: remove dead code
Change-Id: Ia1f34a17ae582575f8cd3514ed7bc015b0a5006e
2014-01-24 14:51:54 -08:00
Da Zhou 65ad928602 ADB sideload command not work
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>
2014-01-17 14:23:48 -08:00
Dees_Troy 1669f89dd2 Update to latest AOSP master
Merge in latest commits from AOSP master and fix merge conflicts
2013-09-04 19:00:58 +00:00
Dees_Troy 2673cec07a Move all AOSP code out of recovery binary
Improves license compatibility between GPL and Apache

Change-Id: I2b165aa575bb6213af6b07936f99610c113443f0
2013-04-04 18:57:34 +00:00
Nick Kralevich 05aa743493 minadbd: remove unnecessary header files.
Change-Id: Iff2b53d9e63b279d0262cd2e9cfb11e0ca4d6b42
2013-03-01 09:16:26 -08:00
Ethan Yonker f087dfb52c exit instead of return if sideload file creation fails
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>
2013-01-09 16:35:51 +00:00
Dees_Troy 9a4b569e9d Improve adb sideload - use storage vs tmp 2012-09-19 15:11:03 -04:00