Handling of incoming AVRCP Controller connections

Resolve edge cases on incoming AVRCP Controllers Remote Controller
cases, both caused the remote control component to either generate an
out of bounds error or fail to update peer features.

Test: receive incoming AVRCP connection
Bug: 130750865
Change-Id: I15abd2fd4bc963889d6cdfe9364a651e2b4c3c10
diff --git a/system/bta/av/bta_av_act.cc b/system/bta/av/bta_av_act.cc
index ead7e29..a727842 100644
--- a/system/bta/av/bta_av_act.cc
+++ b/system/bta/av/bta_av_act.cc
@@ -1873,9 +1873,9 @@
       /*
        * In case scb is not created by the time we are done with SDP
        * we still need to send RC feature event. So we need to get BD
-       * from Message
+       * from Message.  Note that lidx is 1 based not 0 based
        */
-      rc_feat.peer_addr = p_cb->lcb[p_cb->rcb[rc_handle].lidx].addr;
+      rc_feat.peer_addr = p_cb->lcb[p_cb->rcb[rc_handle].lidx - 1].addr;
     } else {
       rc_feat.peer_addr = p_scb->PeerAddress();
     }
diff --git a/system/btif/src/btif_av.cc b/system/btif/src/btif_av.cc
index 3659534..24e32ec 100644
--- a/system/btif/src/btif_av.cc
+++ b/system/btif/src/btif_av.cc
@@ -1244,6 +1244,9 @@
   peer = new BtifAvPeer(peer_address, AVDT_TSEP_SRC, bta_handle, peer_id);
   peers_.insert(std::make_pair(peer_address, peer));
   peer->Init();
+  if (active_peer_.IsEmpty()) {
+    active_peer_ = peer_address;
+  }
   return peer;
 }