Squashed adb fixes.

fix up adb to prefer /sbin/sh if it exists

allow always insecure

Change-Id: I5c15731c95d123488e90aaeac5b497f556b53363

Conflicts:

	adb/Android.mk

Conflicts:
	adb/services.c
adbd:fix framebuffer handle when(fbinfo.size % 640 != 0)
adb: Fix missing header paths

Change-Id: I570b631ced11ab104aafe7ebfe71bae4e380d8af
adb: Fix backup fallback

 * Check for existence of binary first

Change-Id: I5c1884655ae031f51cb935221ae7870b016e259d
adb: Check sender's socket id when receiving packets.

handle_packet() in adb.c didn't check that when an A_WRTE packet is
received, the sender's local-id matches the socket's peer id.

This meant that a compromised adbd server could sent packets to
the host adb server, spoofing the identity of another connected
device if it could "guess" the right host socket id.

This patch gets rid of the issue by enforcing even more checks
to ensure that all packets comply with the description in
protocol.txt.

+ Fix a bug where closing a local socket associated with a
  remote one would always send an A_CLSE(0, remote-id, "")
  message, though protocol.txt says that should only happen
  for failed opens.

  The issue was that local_socket_close() called
  remote_socket_close() after clearing the remote socket's
  'peer' field.

  The fix introduces a new asocket optional callback,
  named 'shutdown' that is called before that, and is
  used to send the A_CLSE() message with the right ID
  in remote_socket_shutdown().

  Also add some code in handle_packet() to detect
  invalid close commands.

Change-Id: I9098bc8c6e81f8809334b060e5dca4fc92e6fbc9
adb: configure /system file permission with fs_config

adbd changes the permissions of files uploaded by copying
owner's permission to group and other. This causes kernel
load failure if any changes are made to kernel modules
followed by ``adb push'' or ``adb sync'' because file mode
644 would become 666.

The change uses fs_config to get the target mode of files.

In addition, the SELinux file label is set incorrectly
on synced files. Set the label properly.

Change-Id: I354db848f39adfbf189d7e8d3b028e8d763c772f
Signed-off-by: Liang Cheng <licheng@nvidia.com>
Bug: 12264775
adb: do not chown/chmod files pushed to sdcard

Commit "adb: configure /system file permission with fs_config" can cause
'Operation not permitted' errors when pushing files to sdcard because
chown and chmod are not allowed. Omit chown and chmod operations if the
destination directory has sdcard in the group name.

Change-Id: I05767a2699b152392b4ff1606194826285cbcb1e