From 282ac0fe5a436147e20f11f0659695ec5bcc411e Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:37:31 +0100 Subject: [PATCH] Fix: do not reject empty packets that arent message type (#510) * do not reject empty packets that arent message type * leave message with empty byte array * clean up comments --- .../bitchat/android/mesh/BluetoothMeshService.kt | 3 +-- .../com/bitchat/android/mesh/SecurityManager.kt | 15 +-------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt b/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt index ee5f0f16..dd12138d 100644 --- a/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt +++ b/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt @@ -949,12 +949,11 @@ class BluetoothMeshService(private val context: Context) { * Send leave announcement */ private fun sendLeaveAnnouncement() { - val nickname = delegate?.getNickname() ?: myPeerID val packet = BitchatPacket( type = MessageType.LEAVE.value, ttl = MAX_TTL, senderID = myPeerID, - payload = nickname.toByteArray() + payload = byteArrayOf() ) // Sign the packet before broadcasting diff --git a/app/src/main/java/com/bitchat/android/mesh/SecurityManager.kt b/app/src/main/java/com/bitchat/android/mesh/SecurityManager.kt index 717d302c..bce69c26 100644 --- a/app/src/main/java/com/bitchat/android/mesh/SecurityManager.kt +++ b/app/src/main/java/com/bitchat/android/mesh/SecurityManager.kt @@ -50,24 +50,11 @@ class SecurityManager(private val encryptionService: EncryptionService, private return false } - // Validate packet payload - if (packet.payload.isEmpty()) { - Log.d(TAG, "Dropping packet with empty payload") - return false - } - // Replay attack protection (same 5-minute window as iOS) val currentTime = System.currentTimeMillis() - val packetTime = packet.timestamp.toLong() - val timeDiff = kotlin.math.abs(currentTime - packetTime) - -// if (timeDiff > MESSAGE_TIMEOUT) { -// Log.d(TAG, "Dropping old packet from $peerID, time diff: ${timeDiff/1000}s") -// return false -// } + val messageType = MessageType.fromValue(packet.type) // Duplicate detection - val messageType = MessageType.fromValue(packet.type) val messageID = generateMessageID(packet, peerID) if (messageType != MessageType.ANNOUNCE) { if (processedMessages.contains(messageID)) {