2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-22 18:07:55 +00:00

Check packet type inside of isValidIdentityPacket

This commit is contained in:
Albert Vaca Cintora 2024-05-19 15:32:16 +02:00
parent 186236b93a
commit efda9b95ab
No known key found for this signature in database
2 changed files with 7 additions and 16 deletions

View File

@ -45,12 +45,6 @@ class BluetoothLinkProvider(private val context: Context) : BaseLinkProvider() {
@Throws(CertificateException::class) @Throws(CertificateException::class)
private fun addLink(identityPacket: NetworkPacket, link: BluetoothLink) { private fun addLink(identityPacket: NetworkPacket, link: BluetoothLink) {
if (!DeviceInfo.isValidIdentityPacket(identityPacket)) {
Log.w("KDE/LanLinkProvider", "Invalid identity packet received.")
return
}
val deviceId = identityPacket.getString("deviceId") val deviceId = identityPacket.getString("deviceId")
Log.i("BluetoothLinkProvider", "addLink to $deviceId") Log.i("BluetoothLinkProvider", "addLink to $deviceId")
val oldLink = visibleDevices[deviceId] val oldLink = visibleDevices[deviceId]
@ -202,8 +196,8 @@ class BluetoothLinkProvider(private val context: Context) : BaseLinkProvider() {
} }
val response = sb.toString() val response = sb.toString()
val identityPacket = NetworkPacket.unserialize(response) val identityPacket = NetworkPacket.unserialize(response)
if (identityPacket.type != NetworkPacket.PACKET_TYPE_IDENTITY) { if (!DeviceInfo.isValidIdentityPacket(identityPacket)) {
Log.e("BTLinkProvider/Server", "2 Expecting an identity packet") Log.w("BTLinkProvider/Server", "Invalid identity packet received.")
return return
} }
Log.i("BTLinkProvider/Server", "Received identity packet") Log.i("BTLinkProvider/Server", "Received identity packet")
@ -371,14 +365,9 @@ class BluetoothLinkProvider(private val context: Context) : BaseLinkProvider() {
Log.i("BTLinkProvider/Client", "Device: " + device.address + " Before unserialize (message: '" + message + "')") Log.i("BTLinkProvider/Client", "Device: " + device.address + " Before unserialize (message: '" + message + "')")
val identityPacket = NetworkPacket.unserialize(message) val identityPacket = NetworkPacket.unserialize(message)
Log.i("BTLinkProvider/Client", "Device: " + device.address + " After unserialize") Log.i("BTLinkProvider/Client", "Device: " + device.address + " After unserialize")
if (identityPacket.type != NetworkPacket.PACKET_TYPE_IDENTITY) {
Log.e("BTLinkProvider/Client", "1 Expecting an identity packet")
socket.close()
return
}
if (!DeviceInfo.isValidIdentityPacket(identityPacket)) { if (!DeviceInfo.isValidIdentityPacket(identityPacket)) {
Log.w("KDE/LanLinkProvider", "Invalid identity packet received.") Log.w("BTLinkProvider/Client", "Invalid identity packet received.")
connection.close() connection.close()
return return
} }
@ -429,4 +418,4 @@ class BluetoothLinkProvider(private val context: Context) : BaseLinkProvider() {
private val SERVICE_UUID = UUID.fromString("185f3df4-3268-4e3f-9fca-d4d5059915bd") private val SERVICE_UUID = UUID.fromString("185f3df4-3268-4e3f-9fca-d4d5059915bd")
private val BYTE_REVERSED_SERVICE_UUID = UUID(java.lang.Long.reverseBytes(SERVICE_UUID.leastSignificantBits), java.lang.Long.reverseBytes(SERVICE_UUID.mostSignificantBits)) private val BYTE_REVERSED_SERVICE_UUID = UUID(java.lang.Long.reverseBytes(SERVICE_UUID.leastSignificantBits), java.lang.Long.reverseBytes(SERVICE_UUID.mostSignificantBits))
} }
} }

View File

@ -103,7 +103,9 @@ class DeviceInfo(
@JvmStatic @JvmStatic
fun isValidIdentityPacket(identityPacket: NetworkPacket): Boolean = with(identityPacket) { fun isValidIdentityPacket(identityPacket: NetworkPacket): Boolean = with(identityPacket) {
DeviceHelper.filterName(getString("deviceName", "")).isNotBlank() && getString("deviceId", "").isNotBlank() type == NetworkPacket.PACKET_TYPE_IDENTITY &&
DeviceHelper.filterName(getString("deviceName", "")).isNotBlank() &&
getString("deviceId", "").isNotBlank()
} }
} }
} }