@@ -132,6 +132,31 @@ static void test_vbi(void)
132132 rc = MqttDecode_Vbi (buf , & value , sizeof (buf ));
133133 CHECK (rc == 4 , "Decode VBI 2097152 roundtrip: rc == 4" );
134134 CHECK (value == 2097152 , "Decode VBI 2097152 roundtrip: value correct" );
135+
136+ /* [MQTT-1.5.5-1] Overlong encodings must be rejected */
137+ /* Overlong 2-byte encoding of 0: [0x80, 0x00] */
138+ buf [0 ] = 0x80 ; buf [1 ] = 0x00 ;
139+ rc = MqttDecode_Vbi (buf , & value , sizeof (buf ));
140+ CHECK (rc == MQTT_CODE_ERROR_MALFORMED_DATA ,
141+ "Overlong 2-byte VBI (0): returns MALFORMED_DATA" );
142+
143+ /* Overlong 3-byte encoding of 0: [0x80, 0x80, 0x00] */
144+ buf [0 ] = 0x80 ; buf [1 ] = 0x80 ; buf [2 ] = 0x00 ;
145+ rc = MqttDecode_Vbi (buf , & value , sizeof (buf ));
146+ CHECK (rc == MQTT_CODE_ERROR_MALFORMED_DATA ,
147+ "Overlong 3-byte VBI (0): returns MALFORMED_DATA" );
148+
149+ /* Overlong 4-byte encoding of 0: [0x80, 0x80, 0x80, 0x00] */
150+ buf [0 ] = 0x80 ; buf [1 ] = 0x80 ; buf [2 ] = 0x80 ; buf [3 ] = 0x00 ;
151+ rc = MqttDecode_Vbi (buf , & value , sizeof (buf ));
152+ CHECK (rc == MQTT_CODE_ERROR_MALFORMED_DATA ,
153+ "Overlong 4-byte VBI (0): returns MALFORMED_DATA" );
154+
155+ /* Overlong 2-byte encoding of 127: [0xFF, 0x00] */
156+ buf [0 ] = 0xFF ; buf [1 ] = 0x00 ;
157+ rc = MqttDecode_Vbi (buf , & value , sizeof (buf ));
158+ CHECK (rc == MQTT_CODE_ERROR_MALFORMED_DATA ,
159+ "Overlong 2-byte VBI (127): returns MALFORMED_DATA" );
135160}
136161
137162/* -------------------------------------------------------------------------- */
0 commit comments