diff --git a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/MQTT5Connack.kt b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/MQTT5Connack.kt
index b27e785db3ba1618db8949dae7357c67b2ea1f33..6ee2e81d845703a4fa43f6d6d3afdd5c21f4d80e 100644
--- a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/MQTT5Connack.kt
+++ b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/MQTT5Connack.kt
@@ -74,6 +74,11 @@ public class MQTT5Connack(
                 ReasonCode.valueOf(inStream.readByte().toInt()) ?: throw MQTTException(
                     ReasonCode.PROTOCOL_ERROR
                 )
+
+            if (connectReasonCode !in validReasonCodes) throw MQTTException(
+                ReasonCode.PROTOCOL_ERROR
+            )
+
             val properties = inStream.deserializeProperties(validProperties)
 
             return MQTT5Connack(