Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix AdvertisingDataBuilder UUID Insertion Bug #10638

Merged
merged 1 commit into from May 23, 2019

Conversation

Projects
None yet
6 participants
@AGlass0fMilk
Copy link
Contributor

commented May 22, 2019

Description

Fixed a bug that checked the wrong buffer size when inserting UUID information into an advertisement payload.

When calling AdvertisingDataBuilder::setLocalServiceList() (or other UUID related builder functions), they would subsequently call AdvertisingDataBuilder::setUUIDData to insert UUID fields into the advertisement/scan response payload.

An advertising payload field consists of a 2-byte header that details:

  1. Type of the field
  2. Size of the field data

As well as the field data. The check in setUUIDData here:

/* if we can't fit the new data do not proceed */
if (new_size > data.size() - (_payload_length - old_size)) {
return BLE_ERROR_BUFFER_OVERFLOW;
}

Was erroneously checking the data + header size against the original size of the data passed into the function. It should have been checking the data + header size against the underlying _buffer (minus already occupied space).

I discovered this issue when attempting to advertise a 16-byte custom service UUID in the advertising scan response. If using the AdvertisingDataSimpleBuilder convenience class in debug build configuration, this bug would always cause an assert.

I verified I was able to send and view the custom UUID in the scan response over BLE after applying this patch. I used nRF Connect to sniff the BLE advertising data.

(Very descriptive picture I know):
image

Pull request type

[X] Fix
[ ] Refactor
[ ] Target update
[ ] Functionality change
[ ] Docs update
[ ] Test update
[ ] Breaking change

Reviewers

@pan-
@paul-szczepanek-arm

Fixed bug that checked the wrong buffer size when inserting UUID info…
…rmation into an advertisement payload.

@ciarmcom ciarmcom requested review from pan-, paul-szczepanek-arm and ARMmbed/mbed-os-maintainers May 22, 2019

@ciarmcom

This comment has been minimized.

Copy link
Member

commented May 22, 2019

@pan-

pan- approved these changes May 23, 2019

Copy link
Member

left a comment

Thanks for the fix, it looks good.

@0xc0170

This comment has been minimized.

Copy link
Member

commented May 23, 2019

CI started

@paul-szczepanek-arm
Copy link
Member

left a comment

Thank you for catching this.

@mbed-ci

This comment has been minimized.

Copy link

commented May 23, 2019

Test run: SUCCESS

Summary: 11 of 11 test jobs passed
Build number : 1
Build artifacts

@0xc0170 0xc0170 added ready for merge and removed needs: CI labels May 23, 2019

@0xc0170 0xc0170 merged commit b3328fd into ARMmbed:master May 23, 2019

26 checks passed

continuous-integration/jenkins/pr-head This commit looks good
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
jenkins-ci/build-ARM Success
Details
jenkins-ci/build-GCC_ARM Success
Details
jenkins-ci/build-IAR Success
Details
jenkins-ci/cloud-client-test Success
Details
jenkins-ci/dynamic-memory-usage Success
Details
jenkins-ci/exporter Success
Details
jenkins-ci/greentea-test Success
Details
jenkins-ci/mbed2-build-ARM Success
Details
jenkins-ci/mbed2-build-GCC_ARM Success
Details
jenkins-ci/mbed2-build-IAR Success
Details
jenkins-ci/unittests Success
Details
travis-ci/astyle Success!
Details
travis-ci/docs Success!
Details
travis-ci/doxy-spellcheck Success!
Details
travis-ci/events Success! Runtime is 8648 cycles.
Details
travis-ci/gitattributestest Success!
Details
travis-ci/include_check Success!
Details
travis-ci/licence_check Success!
Details
travis-ci/littlefs Success! Code size is 8448B.
Details
travis-ci/psa-autogen Success!
Details
travis-ci/tools-py2.7 Success!
Details
travis-ci/tools-py3.5 Success!
Details
travis-ci/tools-py3.6 Success!
Details
travis-ci/tools-py3.7 Success!
Details

@AGlass0fMilk AGlass0fMilk deleted the AGlass0fMilk:fix-advertising-uuid-bug branch Jun 4, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.