Loading android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java +6 −0 Original line number Diff line number Diff line Loading @@ -432,6 +432,12 @@ public class BassClientStateMachine extends StateMachine { pbData = PublicBroadcastData.parsePublicBroadcastData(pbAnnouncement); } } if (broadcastId == BassConstants.INVALID_BROADCAST_ID || pbData == null) { Log.w(TAG, "Invalid broadcast ID or public broadcast data"); return false; } // Check if broadcast name present in scan record and parse // null if no name present String broadcastName = checkAndParseBroadcastName(scanRecord); Loading android/app/src/com/android/bluetooth/bass_client/PublicBroadcastData.java +4 −4 Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ class PublicBroadcastData { static PublicBroadcastData parsePublicBroadcastData(byte[] serviceData) { if (serviceData == null || serviceData.length < PUBLIC_BROADCAST_SERVICE_DATA_LEN_MIN) { Log.e(TAG, "Invalid service data for PublicBroadcastData construction"); throw new IllegalArgumentException("PublicBroadcastData: serviceData is invalid"); Log.w(TAG, "Invalid service data for PublicBroadcastData construction"); return null; } PublicBroadcastInfo publicBroadcastInfo = new PublicBroadcastInfo(); Loading @@ -93,8 +93,8 @@ class PublicBroadcastData { publicBroadcastInfo.metaDataLength = serviceData[offset++]; if (serviceData.length != (publicBroadcastInfo.metaDataLength + PUBLIC_BROADCAST_SERVICE_DATA_LEN_MIN)) { Log.e(TAG, "Invalid meta data length for PublicBroadcastData construction"); throw new IllegalArgumentException("PublicBroadcastData: metaData is invalid"); Log.w(TAG, "Invalid meta data length for PublicBroadcastData construction"); return null; } if (publicBroadcastInfo.metaDataLength != 0) { publicBroadcastInfo.metaData = new byte[(int) publicBroadcastInfo.metaDataLength]; Loading android/app/tests/unit/src/com/android/bluetooth/bass_client/PublicBroadcastDataTest.java +3 −8 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.bluetooth.bass_client; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import android.bluetooth.BluetoothLeBroadcastMetadata; import org.junit.Test; Loading Loading @@ -47,22 +45,19 @@ public class PublicBroadcastDataTest { @Test public void parsePublicBroadcastData() { assertThrows(IllegalArgumentException.class, () -> PublicBroadcastData.parsePublicBroadcastData(null)); assertThat(PublicBroadcastData.parsePublicBroadcastData(null)).isNull(); byte[] serviceDataInvalid = new byte[] { (byte) 0x02, // features, non-encrypted, standard quality prsent }; assertThrows(IllegalArgumentException.class, () -> PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid)); assertThat(PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid)).isNull(); byte[] serviceDataInvalid2 = new byte[] { (byte) 0x02, // features, non-encrypted, standard quality prsent (byte) 0x03, // metaDataLength (byte) 0x06, (byte) 0x07, // invalid metaData }; assertThrows(IllegalArgumentException.class, () -> PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid2)); assertThat(PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid2)).isNull(); byte[] serviceData = new byte[] { (byte) 0x07, // features Loading Loading
android/app/src/com/android/bluetooth/bass_client/BassClientStateMachine.java +6 −0 Original line number Diff line number Diff line Loading @@ -432,6 +432,12 @@ public class BassClientStateMachine extends StateMachine { pbData = PublicBroadcastData.parsePublicBroadcastData(pbAnnouncement); } } if (broadcastId == BassConstants.INVALID_BROADCAST_ID || pbData == null) { Log.w(TAG, "Invalid broadcast ID or public broadcast data"); return false; } // Check if broadcast name present in scan record and parse // null if no name present String broadcastName = checkAndParseBroadcastName(scanRecord); Loading
android/app/src/com/android/bluetooth/bass_client/PublicBroadcastData.java +4 −4 Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ class PublicBroadcastData { static PublicBroadcastData parsePublicBroadcastData(byte[] serviceData) { if (serviceData == null || serviceData.length < PUBLIC_BROADCAST_SERVICE_DATA_LEN_MIN) { Log.e(TAG, "Invalid service data for PublicBroadcastData construction"); throw new IllegalArgumentException("PublicBroadcastData: serviceData is invalid"); Log.w(TAG, "Invalid service data for PublicBroadcastData construction"); return null; } PublicBroadcastInfo publicBroadcastInfo = new PublicBroadcastInfo(); Loading @@ -93,8 +93,8 @@ class PublicBroadcastData { publicBroadcastInfo.metaDataLength = serviceData[offset++]; if (serviceData.length != (publicBroadcastInfo.metaDataLength + PUBLIC_BROADCAST_SERVICE_DATA_LEN_MIN)) { Log.e(TAG, "Invalid meta data length for PublicBroadcastData construction"); throw new IllegalArgumentException("PublicBroadcastData: metaData is invalid"); Log.w(TAG, "Invalid meta data length for PublicBroadcastData construction"); return null; } if (publicBroadcastInfo.metaDataLength != 0) { publicBroadcastInfo.metaData = new byte[(int) publicBroadcastInfo.metaDataLength]; Loading
android/app/tests/unit/src/com/android/bluetooth/bass_client/PublicBroadcastDataTest.java +3 −8 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.bluetooth.bass_client; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import android.bluetooth.BluetoothLeBroadcastMetadata; import org.junit.Test; Loading Loading @@ -47,22 +45,19 @@ public class PublicBroadcastDataTest { @Test public void parsePublicBroadcastData() { assertThrows(IllegalArgumentException.class, () -> PublicBroadcastData.parsePublicBroadcastData(null)); assertThat(PublicBroadcastData.parsePublicBroadcastData(null)).isNull(); byte[] serviceDataInvalid = new byte[] { (byte) 0x02, // features, non-encrypted, standard quality prsent }; assertThrows(IllegalArgumentException.class, () -> PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid)); assertThat(PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid)).isNull(); byte[] serviceDataInvalid2 = new byte[] { (byte) 0x02, // features, non-encrypted, standard quality prsent (byte) 0x03, // metaDataLength (byte) 0x06, (byte) 0x07, // invalid metaData }; assertThrows(IllegalArgumentException.class, () -> PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid2)); assertThat(PublicBroadcastData.parsePublicBroadcastData(serviceDataInvalid2)).isNull(); byte[] serviceData = new byte[] { (byte) 0x07, // features Loading