From: Android Build Merger (Role) Date: Fri, 13 Jul 2018 06:58:15 +0000 (+0000) Subject: [automerger] Don't use Address after it was deleted am: 228712652a am: 4530549386 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9b5d5d42a91d762cdb23d4ec681daf98004e764e;p=android-x86%2Fsystem-bt.git [automerger] Don't use Address after it was deleted am: 228712652a am: 4530549386 Change-Id: I29002bb4e25f3c026c144f03db577fbdf7ebddf4 --- 9b5d5d42a91d762cdb23d4ec681daf98004e764e diff --cc stack/btm/btm_dev.c index 1e3f1fe79,c6def65cf..25072c5fd --- a/stack/btm/btm_dev.c +++ b/stack/btm/btm_dev.c @@@ -157,19 -164,20 +157,18 @@@ BOOLEAN BTM_SecAddDevice (BD_ADDR bd_ad } - /******************************************************************************* - ** - ** Function BTM_SecDeleteDevice - ** - ** Description Free resources associated with the device. - ** - ** Parameters: bd_addr - BD address of the peer - ** - ** Returns TRUE if removed OK, FALSE if not found or ACL link is active - ** - *******************************************************************************/ + /** Free resources associated with the device associated with |bd_addr| address. + * + * *** WARNING *** + * tBTM_SEC_DEV_REC associated with bd_addr becomes invalid after this function + * is called, also any of it's fields. i.e. if you use p_dev_rec->bd_addr, it is + * no longer valid! + * *** WARNING *** + * + * Returns true if removed OK, false if not found or ACL link is active. + */ BOOLEAN BTM_SecDeleteDevice (BD_ADDR bd_addr) { - tBTM_SEC_DEV_REC *p_dev_rec; - if (BTM_IsAclConnectionUp(bd_addr, BT_TRANSPORT_LE) || BTM_IsAclConnectionUp(bd_addr, BT_TRANSPORT_BR_EDR)) { @@@ -177,12 -185,13 +176,14 @@@ return FALSE; } - if ((p_dev_rec = btm_find_dev(bd_addr)) != NULL) + tBTM_SEC_DEV_REC *p_dev_rec = btm_find_dev(bd_addr); + if (p_dev_rec != NULL) { + BD_ADDR bda; + memcpy(bda, bd_addr, BD_ADDR_LEN); btm_sec_free_dev(p_dev_rec); /* Tell controller to get rid of the link key, if it has one stored */ - BTM_DeleteStoredLinkKey (p_dev_rec->bd_addr, NULL); + BTM_DeleteStoredLinkKey (bda, NULL); } return TRUE; diff --cc stack/include/btm_api.h index 89b718f35,5df4ce247..a0dc70b95 --- a/stack/include/btm_api.h +++ b/stack/include/btm_api.h @@@ -3313,26 -3313,18 +3313,27 @@@ extern BOOLEAN BTM_SecAddDevice (BD_ADD UINT8 key_type, tBTM_IO_CAP io_cap, UINT8 pin_length); - /******************************************************************************* - ** - ** Function BTM_SecDeleteDevice - ** - ** Description Free resources associated with the device. - ** - ** Returns TRUE if rmoved OK, FALSE if not found - ** - *******************************************************************************/ + /** Free resources associated with the device associated with |bd_addr| address. + * + * *** WARNING *** + * tBTM_SEC_DEV_REC associated with bd_addr becomes invalid after this function + * is called, also any of it's fields. i.e. if you use p_dev_rec->bd_addr, it is + * no longer valid! + * *** WARNING *** + * + * Returns true if removed OK, false if not found or ACL link is active. + */ extern BOOLEAN BTM_SecDeleteDevice (BD_ADDR bd_addr); +/******************************************************************************* +** +** Function BTM_SecClearSecurityFlags +** +** Description Reset the security flags (mark as not-paired) for a given +** remove device. +** +*******************************************************************************/ +extern void BTM_SecClearSecurityFlags (BD_ADDR bd_addr); /******************************************************************************* **