fix fread buffer has no terminating null string

do not allocate memory where it is not needed

Change-Id: I8ab4f7d36173c59aa74a590581a0f7027b7d8a69
use different USB PIDs for adb and adb+ums modes

Commit ad054c684524962eae3269c1d807dc60e8bca1ec made it so that
the same VID/PID pair was used for both adb and composite adb+ums
modes, which prevents the installation of drivers in Windows so that
either mode can be supported.

This uses the original VID/PID pair (18d1/d001) for adb+ums and
uses 18d1/d002 for adb.

Change-Id: I190c821995b7fe9e8177354aec70bd02c114d122
use correct USB PID for adb and new PID for adb+ums

The previous commit assumed that the correct PID for adb+ums
was 18d1/d001. That is incorrect. That VID/PID pair is widely
used for non-composite adb function in recovery. Since there is
no "generic Android" VID/PID allocated for adb+ums, we will
"unofficially reserve" an unused one for that purpose: 18d1/d003.

Change-Id: I6ae095569186c1e854f10b803f786d8c1ae7fb93
recovery: Compatibility with upstream minui change

 * minui is changing a lot upstream. We won't merge it here, but
   it's being used in another branch. Add compatibility in CWM
   so that we can move forward.

Change-Id: I8a3289df2d7bc569229b7212c22adb90d4e76ffd
remove unused variable

Change-Id: I0f66df38964baccd1c8e58fa7006cb9db5fc6df5
Make legacy prop environment available to recovery

Google changed the in-memory format for storing properties in 4.4.
Zips containing an older update-binary expect the old format, otherwise
assertions on properties in the update script fail.

This is just enough of the old property service to copy the properties
to the legacy format before running the updater.

Note: this commit has been amended from the original version by _that.
1) It has been trimmed to only provide the legacy prop environment.
Edits to install.c are done in a separate commit from scratch to
maintain apache2 licensing in this repo.
2) Return values are given to check whether prop environment was setup
successfully.
3) Slight formatting changes.

Change-Id: I1fa9f96fa7a62c7eaba852e4d62e793cd6818907
Use legacy property environment if old update-binary

If an installation package contains an update-binary that is
incompatible with the kitkit bionic property environment, set a legacy
property environment. This removes the need for a fallback update-binary
which is often incompatible with older update-scripts.

Method of setting prop environment based on cyanogen's commit:
"Set ANDROID_PROPERTY_WORKSPACE in exec." Tip to rename
/dev/__properties__ so that the legacy property workspace is actually
used comes from conversation with _that.

Change-Id: I5268f67537ad03c077fa05cbb98dfd4da194ffb8
Revert "Add a copy of the updater binary to the recovery resources"

No longer necessary when a legacy property environment is available.

This reverts commit 1153ae5ad9a25198e4edfa7ff9b0bce7f9d40220.

Change-Id: I9726f45d896eb3e14b80e2ddf1df5e6acea83323
Only init legacy property environment once

Installing multiple pre-kitkat packages in succession may cause
legacy_properties_init() to fail. Only initialize the workspace once and
then just do path renames for all subsequent requests to enable legacy
props.

Change-Id: Ida528aca9322f77935411b270fdf182828abab8a
loki updates:

- fix fstat could fail on getting open partition size
- sync latest sources to support new devices
- match original loki upsteram sources
- fix all loki_recovery compiler warnings
- one binary for all functions patch/flash/find
- Makefile and Android.mk to compile new multi-binary tool or lib
Change-Id: I050a673f39b32136c817b69c00939818696e2c56