@@ -39,7 +39,7 @@ static const char* LOG_TAG = "NimBLEAdvertisementData";
39
39
* @param [in] length The size of data to be added to the payload.
40
40
*/
41
41
bool NimBLEAdvertisementData::addData (const uint8_t * data, size_t length) {
42
- if (( m_payload.size () + length) > BLE_HS_ADV_MAX_SZ) {
42
+ if (m_payload.size () + length > BLE_HS_ADV_MAX_SZ) {
43
43
NIMBLE_LOGE (LOG_TAG, " Data length exceeded" );
44
44
return false ;
45
45
}
@@ -159,6 +159,7 @@ bool NimBLEAdvertisementData::addServiceUUID(const NimBLEUUID& serviceUUID) {
159
159
type = BLE_HS_ADV_TYPE_COMP_UUIDS128;
160
160
break ;
161
161
default :
162
+ NIMBLE_LOGE (LOG_TAG, " Cannot add UUID, invalid size!" );
162
163
return false ;
163
164
}
164
165
@@ -169,10 +170,11 @@ bool NimBLEAdvertisementData::addServiceUUID(const NimBLEUUID& serviceUUID) {
169
170
}
170
171
171
172
if (length + getPayload ().size () > BLE_HS_ADV_MAX_SZ) {
173
+ NIMBLE_LOGE (LOG_TAG, " Cannot add UUID, data length exceeded!" );
172
174
return false ;
173
175
}
174
176
175
- uint8_t data[31 ];
177
+ uint8_t data[BLE_HS_ADV_MAX_SZ ];
176
178
const uint8_t * uuid = serviceUUID.getValue ();
177
179
if (dataLoc == -1 ) {
178
180
data[0 ] = 1 + bytes;
@@ -214,6 +216,7 @@ bool NimBLEAdvertisementData::removeServiceUUID(const NimBLEUUID& serviceUUID) {
214
216
type = BLE_HS_ADV_TYPE_COMP_UUIDS128;
215
217
break ;
216
218
default :
219
+ NIMBLE_LOGE (LOG_TAG, " Cannot remove UUID, invalid size!" );
217
220
return false ;
218
221
}
219
222
@@ -266,12 +269,12 @@ bool NimBLEAdvertisementData::removeServices() {
266
269
* @return True if successful.
267
270
*/
268
271
bool NimBLEAdvertisementData::setManufacturerData (const uint8_t * data, size_t length) {
269
- if (length > 29 ) {
272
+ if (length > BLE_HS_ADV_MAX_FIELD_SZ ) {
270
273
NIMBLE_LOGE (LOG_TAG, " MFG data too long" );
271
274
return false ;
272
275
}
273
276
274
- uint8_t mdata[31 ];
277
+ uint8_t mdata[BLE_HS_ADV_MAX_SZ ];
275
278
mdata[0 ] = length + 1 ;
276
279
mdata[1 ] = BLE_HS_ADV_TYPE_MFG_DATA;
277
280
memcpy (&mdata[2 ], data, length);
@@ -302,12 +305,12 @@ bool NimBLEAdvertisementData::setManufacturerData(const std::vector<uint8_t>& da
302
305
* @return True if successful.
303
306
*/
304
307
bool NimBLEAdvertisementData::setURI (const std::string& uri) {
305
- if (uri.length () > 29 ) {
308
+ if (uri.length () > BLE_HS_ADV_MAX_FIELD_SZ ) {
306
309
NIMBLE_LOGE (LOG_TAG, " URI too long" );
307
310
return false ;
308
311
}
309
312
310
- uint8_t data[31 ];
313
+ uint8_t data[BLE_HS_ADV_MAX_SZ ];
311
314
uint8_t length = 2 + uri.length ();
312
315
data[0 ] = length - 1 ;
313
316
data[1 ] = BLE_HS_ADV_TYPE_URI;
@@ -324,16 +327,16 @@ bool NimBLEAdvertisementData::setURI(const std::string& uri) {
324
327
* @return True if successful.
325
328
*/
326
329
bool NimBLEAdvertisementData::setName (const std::string& name, bool isComplete) {
327
- if (name.length () > 29 ) {
330
+ if (name.length () > BLE_HS_ADV_MAX_FIELD_SZ ) {
328
331
NIMBLE_LOGE (LOG_TAG, " Name too long - truncating" );
329
332
isComplete = false ;
330
333
}
331
334
332
- uint8_t data[31 ];
333
- uint8_t length = 2 + std::min<uint8_t >(name.length (), 29 );
335
+ uint8_t data[BLE_HS_ADV_MAX_SZ ];
336
+ uint8_t length = 2 + std::min<uint8_t >(name.length (), BLE_HS_ADV_MAX_FIELD_SZ );
334
337
data[0 ] = length - 1 ;
335
338
data[1 ] = isComplete ? BLE_HS_ADV_TYPE_COMP_NAME : BLE_HS_ADV_TYPE_INCOMP_NAME;
336
- memcpy (&data[2 ], name.c_str (), std::min<uint8_t >(name.length (), 29 ));
339
+ memcpy (&data[2 ], name.c_str (), std::min<uint8_t >(name.length (), BLE_HS_ADV_MAX_FIELD_SZ ));
337
340
return addData (data, length);
338
341
} // setName
339
342
@@ -411,14 +414,14 @@ bool NimBLEAdvertisementData::setPartialServices32(const std::vector<NimBLEUUID>
411
414
bool NimBLEAdvertisementData::setServices (bool complete, uint8_t size, const std::vector<NimBLEUUID>& uuids) {
412
415
uint8_t bytes = size / 8 ;
413
416
uint8_t length = 2 ; // start with 2 for length + type bytes
414
- uint8_t data[31 ];
417
+ uint8_t data[BLE_HS_ADV_MAX_SZ ];
415
418
416
419
for (const auto & uuid : uuids) {
417
420
if (uuid.bitSize () != size) {
418
421
NIMBLE_LOGE (LOG_TAG, " Service UUID(%d) invalid" , size);
419
422
continue ;
420
423
} else {
421
- if (length + bytes >= 31 ) {
424
+ if (length + bytes >= BLE_HS_ADV_MAX_SZ ) {
422
425
NIMBLE_LOGW (LOG_TAG, " Too many services - truncating" );
423
426
complete = false ;
424
427
break ;
@@ -441,6 +444,7 @@ bool NimBLEAdvertisementData::setServices(bool complete, uint8_t size, const std
441
444
data[1 ] = (complete ? BLE_HS_ADV_TYPE_COMP_UUIDS128 : BLE_HS_ADV_TYPE_INCOMP_UUIDS128);
442
445
break ;
443
446
default :
447
+ NIMBLE_LOGE (LOG_TAG, " Cannot set services, invalid size!" );
444
448
return false ;
445
449
}
446
450
@@ -458,7 +462,7 @@ bool NimBLEAdvertisementData::setServices(bool complete, uint8_t size, const std
458
462
bool NimBLEAdvertisementData::setServiceData (const NimBLEUUID& uuid, const uint8_t * data, size_t length) {
459
463
uint8_t uuidBytes = uuid.bitSize () / 8 ;
460
464
uint8_t sDataLen = 2 + uuidBytes + length;
461
- if (sDataLen > 31 ) {
465
+ if (sDataLen > BLE_HS_ADV_MAX_SZ ) {
462
466
NIMBLE_LOGE (LOG_TAG, " Service Data too long" );
463
467
return false ;
464
468
}
@@ -475,6 +479,7 @@ bool NimBLEAdvertisementData::setServiceData(const NimBLEUUID& uuid, const uint8
475
479
type = BLE_HS_ADV_TYPE_SVC_DATA_UUID128;
476
480
break ;
477
481
default :
482
+ NIMBLE_LOGE (LOG_TAG, " Cannot set service data, invalid size!" );
478
483
return false ;
479
484
}
480
485
@@ -483,7 +488,7 @@ bool NimBLEAdvertisementData::setServiceData(const NimBLEUUID& uuid, const uint8
483
488
return true ;
484
489
}
485
490
486
- uint8_t sData [31 ];
491
+ uint8_t sData [BLE_HS_ADV_MAX_SZ ];
487
492
sData [0 ] = uuidBytes + length + 1 ;
488
493
sData [1 ] = type;
489
494
memcpy (&sData [2 ], uuid.getValue (), uuidBytes);
0 commit comments