You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2022/02/24 14:33:14 UTC

[mynewt-nimble] 04/10: nimble/ll: Do not validate random address

This is an automated email from the ASF dual-hosted git repository.

andk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 7bf2623c5b7c4b36a9db3be1ffaefc0e1d737a56
Author: Andrzej Kaczmarek <an...@codecoup.pl>
AuthorDate: Tue Feb 22 20:53:37 2022 +0100

    nimble/ll: Do not validate random address
    
    The Core spec does not mention anywhere that we should validate if
    random address has proper bits set so we can skip that part. We only
    assume that all-zeroes means random is not set, just as we do for
    public.
---
 nimble/controller/include/controller/ble_ll.h |  2 --
 nimble/controller/src/ble_ll.c                | 12 ++++--------
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/nimble/controller/include/controller/ble_ll.h b/nimble/controller/include/controller/ble_ll.h
index fb731ab..97233e9 100644
--- a/nimble/controller/include/controller/ble_ll.h
+++ b/nimble/controller/include/controller/ble_ll.h
@@ -478,8 +478,6 @@ void ble_ll_init(void);
 /* Reset the Link Layer */
 int ble_ll_reset(void);
 
-int ble_ll_is_valid_public_addr(const uint8_t *addr);
-
 /* 'Boolean' function returning true if address is a valid random address */
 int ble_ll_is_valid_random_addr(const uint8_t *addr);
 
diff --git a/nimble/controller/src/ble_ll.c b/nimble/controller/src/ble_ll.c
index 73b3db4..362d466 100644
--- a/nimble/controller/src/ble_ll.c
+++ b/nimble/controller/src/ble_ll.c
@@ -594,8 +594,8 @@ ble_ll_addr_subtype(const uint8_t *addr, uint8_t addr_type)
     }
 }
 
-int
-ble_ll_is_valid_public_addr(const uint8_t *addr)
+static int
+ble_ll_is_valid_addr(const uint8_t *addr)
 {
     int i;
 
@@ -661,13 +661,13 @@ ble_ll_is_valid_own_addr_type(uint8_t own_addr_type, const uint8_t *random_addr)
 #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_PRIVACY)
     case BLE_HCI_ADV_OWN_ADDR_PRIV_PUB:
 #endif
-        rc = ble_ll_is_valid_public_addr(g_dev_addr);
+        rc = ble_ll_is_valid_addr(g_dev_addr);
         break;
     case BLE_HCI_ADV_OWN_ADDR_RANDOM:
 #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_PRIVACY)
     case BLE_HCI_ADV_OWN_ADDR_PRIV_RAND:
 #endif
-        rc = ble_ll_is_valid_random_addr(random_addr);
+        rc = ble_ll_is_valid_addr(random_addr);
         break;
     default:
         rc = 0;
@@ -728,10 +728,6 @@ ble_ll_set_random_addr(const uint8_t *cmdbuf, uint8_t len, bool hci_adv_ext)
     }
 #endif
 
-    if (!ble_ll_is_valid_random_addr(cmd->addr)) {
-        return BLE_ERR_INV_HCI_CMD_PARMS;
-    }
-
     memcpy(g_random_addr, cmd->addr, BLE_DEV_ADDR_LEN);
 
 #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_EXT_ADV)