Use correct size for hci_filter type #384
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is for tag 0.5.5, not the master branch, but github doesn't let me create a PR with the tag as a base. Anyway... My proposed fix for issue 383.
Use 16 bytes for the filter structure in set_socket_filter(), not 14.
struct hci_filter unfortunately is not a packed struct:
https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/lib/hci.h
Hence, it has two bytes of padding at the end for correct stride of the 32-bit members.
This used to not be a problem until Linux kernel commit b2186061d6043 (Bluetooth: hci_sock: Fix not validating setsockopt user input) changed the behaviour of HCI_FILTER sockopt; before, the kernel would have truncated the read size but now the data supplied has to be at least the struct size, or we'd get -EINVAL.