**Describe the bug**

NanoMQ mistook a UNSUBSCRIBE message carrying a legitimate User Property attribute as INVALID, causing the connection to be broken instead of the expected return of a UNSUBACK message.


**Expected behavior**

the broker sends a UNSUBACK packet to the client.

**Actual Behavior**

the broker regards the UNSUBSCRIBE request as invalid, and closes the connection. 
![image](https://github.com/nanomq/nanomq/assets/44093631/0831ff53-8670-4263-8b3f-54675782c2d4)

**To Reproduce**
```
echo 104800044d5154540502198e1d215415260008744a613168307079000d77516d586452786d3835676132001e32746e6233766c6a304630344d317a6b3855744b45524a506a347579466aa2c101af9c17260007504f32726b494a000b717245346876656135506b00184f6f5071356d7057616547777255546b6a61706750454f5000115635796b5042377078646b744838556a490008514c344462316a6c0002396d0011784c736a7745326a717a3651364563684300194e676b584d4c74386c6d58656f694e416e744459326271744a001e576d466e506e337763794c6f52356e6a53427a70616e75773932354e6d39000f713564414b6448784654624e4b7854000b65617633456b63796d3177 | xxd -p -r | nc 172.17.0.6 1883
```

![image](https://github.com/nanomq/nanomq/assets/44093631/d5636cc2-fc9c-47ce-a65c-31a9b4f8d04b)
The key length is **00 07**, but NanoMQ treated **26 00** as the key length, thus causing error.

![image](https://github.com/nanomq/nanomq/assets/44093631/6f7666e5-8c10-475f-ad67-681ae53d131b)


**Environment Details**
 - NanoMQ version 0.21.8

**Client SDK**
If possible include the mqtt sdk you used to connect to nanomq
Minimal C test cases are perferred.

**Additional context**
Add any other context about the problem here.

The logic for parsing User Property seems flawed
This is a GitHub Issue
repo:nanomq
owner:emqx
Title : The logic for parsing User Property seems flawed
Issue date:

--- start body ---
**Describe the bug**

NanoMQ mistook a UNSUBSCRIBE message carrying a legitimate User Property attribute as INVALID, causing the connection to be broken instead of the expected return of a UNSUBACK message.


**Expected behavior**

the broker sends a UNSUBACK packet to the client.

**Actual Behavior**

the broker regards the UNSUBSCRIBE request as invalid, and closes the connection. 
![image](https://github.com/nanomq/nanomq/assets/44093631/0831ff53-8670-4263-8b3f-54675782c2d4)

**To Reproduce**
```
echo 104800044d5154540502198e1d215415260008744a613168307079000d77516d586452786d3835676132001e32746e6233766c6a304630344d317a6b3855744b45524a506a347579466aa2c101af9c17260007504f32726b494a000b717245346876656135506b00184f6f5071356d7057616547777255546b6a61706750454f5000115635796b5042377078646b744838556a490008514c344462316a6c0002396d0011784c736a7745326a717a3651364563684300194e676b584d4c74386c6d58656f694e416e744459326271744a001e576d466e506e337763794c6f52356e6a53427a70616e75773932354e6d39000f713564414b6448784654624e4b7854000b65617633456b63796d3177 | xxd -p -r | nc 172.17.0.6 1883
```

![image](https://github.com/nanomq/nanomq/assets/44093631/d5636cc2-fc9c-47ce-a65c-31a9b4f8d04b)
The key length is **00 07**, but NanoMQ treated **26 00** as the key length, thus causing error.

![image](https://github.com/nanomq/nanomq/assets/44093631/6f7666e5-8c10-475f-ad67-681ae53d131b)


**Environment Details**
 - NanoMQ version 0.21.8

**Client SDK**
If possible include the mqtt sdk you used to connect to nanomq
Minimal C test cases are perferred.

**Additional context**
Add any other context about the problem here.

--- end body ---

The issue in NanoMQ v0.21.8 involves improper parsing of the User Property attribute in UNSUBSCRIBE messages, leading to a Denial of Service (DoS) condition where valid requests are incorrectly treated as invalid, causing the broker to close the connection instead of sending a UNSUBACK message. This could potentially be exploited by an attacker to disrupt service by sending crafted UNSUBSCRIBE messages.