Hello,

I found a segmentation fault，

System info：

Ubuntu 20.04: clang 10.0.0 , gcc 9.3.0
Bento4 Version 1.6.0.0

```
./mp42hls poc
```

[poc.zip](https://github.com/axiomatic-systems/Bento4/files/7683148/poc.zip)

result:
 ```
[2]    1481710 segmentation fault
```
gdb
```
Program received signal SIGSEGV, Segmentation fault.
[----------------------------------registers-----------------------------------]
RAX: 0x0 
RBX: 0x555555636670 --> 0x0 
RCX: 0x0 
RDX: 0x4 
RSI: 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
RDI: 0x0 
RBP: 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
RSP: 0x7fffffffdf40 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
RIP: 0x5555555d5426 (<AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+118>:	mov    rax,QWORD PTR [rdi])
R8 : 0x555555637840 --> 0x555555617248 --> 0x55555558bcd0 (<AP4_DataBuffer::~AP4_DataBuffer()>:	endbr64)
R9 : 0x5555556191a0 --> 0x7ffff7fa4008 --> 0x7ffff7e79ba0 (<_ZN10__cxxabiv117__class_type_infoD2Ev>:	endbr64)
R10: 0x555555636730 --> 0x555555619688 --> 0x555555585ad0 (<AP4_ContainerAtom::~AP4_ContainerAtom()>:	endbr64)
R11: 0x7ffff7c60be0 --> 0x555555637890 --> 0x0 
R12: 0x0 
R13: 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
R14: 0x555555636458 --> 0x55555561b850 --> 0x5555555a53d0 (<_ZThn40_N19AP4_EncaSampleEntryD1Ev>:	endbr64)
R15: 0x10
EFLAGS: 0x10202 (carry parity adjust zero sign trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
   0x5555555d5417 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+103>:	nop    WORD PTR [rax+rax*1+0x0]
   0x5555555d5420 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+112>:	mov    rdi,QWORD PTR [rbx]
   0x5555555d5423 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+115>:	mov    rsi,rbp
=> 0x5555555d5426 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+118>:	mov    rax,QWORD PTR [rdi]
   0x5555555d5429 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+121>:	call   QWORD PTR [rax+0x10]
   0x5555555d542c <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+124>:	mov    rbx,QWORD PTR [rbx+0x8]
   0x5555555d5430 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+128>:	test   rbx,rbx
   0x5555555d5433 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+131>:	jne    0x5555555d5420 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+112>
[------------------------------------stack-------------------------------------]
0000| 0x7fffffffdf40 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
0008| 0x7fffffffdf48 --> 0x5555556366b0 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
0016| 0x7fffffffdf50 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
0024| 0x7fffffffdf58 --> 0x5555555d6b6d (<AP4_Expandable::Write(AP4_ByteStream&)+269>:	mov    rax,QWORD PTR [rsp+0x8])
0032| 0x7fffffffdf60 --> 0x11 
0040| 0x7fffffffdf68 --> 0xfd2cec3ba1357000 
0048| 0x7fffffffdf70 --> 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
0056| 0x7fffffffdf78 --> 0x0 
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value
Stopped reason: SIGSEGV
0x00005555555d5426 in AP4_DescriptorListWriter::Action (descriptor=0x0, this=<optimized out>) at /home/zxq/CVE_testing/sourceproject/Bento4/Source/C++/Core/Ap4Descriptor.h:108
108	        return descriptor->Write(m_Stream);

```
Null Pointer Dereference in AP4_DescriptorListWriter::Action
This is a GitHub Issue
repo:Bento4
owner:axiomatic-systems
Title : Null Pointer Dereference in AP4_DescriptorListWriter::Action
Issue date:

--- start body ---
Hello,

I found a segmentation fault，

System info：

Ubuntu 20.04: clang 10.0.0 , gcc 9.3.0
Bento4 Version 1.6.0.0

```
./mp42hls poc
```

[poc.zip](https://github.com/axiomatic-systems/Bento4/files/7683148/poc.zip)

result:
 ```
[2]    1481710 segmentation fault
```
gdb
```
Program received signal SIGSEGV, Segmentation fault.
[----------------------------------registers-----------------------------------]
RAX: 0x0 
RBX: 0x555555636670 --> 0x0 
RCX: 0x0 
RDX: 0x4 
RSI: 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
RDI: 0x0 
RBP: 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
RSP: 0x7fffffffdf40 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
RIP: 0x5555555d5426 (<AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+118>:	mov    rax,QWORD PTR [rdi])
R8 : 0x555555637840 --> 0x555555617248 --> 0x55555558bcd0 (<AP4_DataBuffer::~AP4_DataBuffer()>:	endbr64)
R9 : 0x5555556191a0 --> 0x7ffff7fa4008 --> 0x7ffff7e79ba0 (<_ZN10__cxxabiv117__class_type_infoD2Ev>:	endbr64)
R10: 0x555555636730 --> 0x555555619688 --> 0x555555585ad0 (<AP4_ContainerAtom::~AP4_ContainerAtom()>:	endbr64)
R11: 0x7ffff7c60be0 --> 0x555555637890 --> 0x0 
R12: 0x0 
R13: 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
R14: 0x555555636458 --> 0x55555561b850 --> 0x5555555a53d0 (<_ZThn40_N19AP4_EncaSampleEntryD1Ev>:	endbr64)
R15: 0x10
EFLAGS: 0x10202 (carry parity adjust zero sign trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
   0x5555555d5417 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+103>:	nop    WORD PTR [rax+rax*1+0x0]
   0x5555555d5420 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+112>:	mov    rdi,QWORD PTR [rbx]
   0x5555555d5423 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+115>:	mov    rsi,rbp
=> 0x5555555d5426 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+118>:	mov    rax,QWORD PTR [rdi]
   0x5555555d5429 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+121>:	call   QWORD PTR [rax+0x10]
   0x5555555d542c <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+124>:	mov    rbx,QWORD PTR [rbx+0x8]
   0x5555555d5430 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+128>:	test   rbx,rbx
   0x5555555d5433 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+131>:	jne    0x5555555d5420 <AP4_DecoderConfigDescriptor::WriteFields(AP4_ByteStream&)+112>
[------------------------------------stack-------------------------------------]
0000| 0x7fffffffdf40 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
0008| 0x7fffffffdf48 --> 0x5555556366b0 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
0016| 0x7fffffffdf50 --> 0x5555556365e0 --> 0x55555561f5a0 --> 0x5555555d55c0 (<AP4_DecoderConfigDescriptor::~AP4_DecoderConfigDescriptor()>:	endbr64)
0024| 0x7fffffffdf58 --> 0x5555555d6b6d (<AP4_Expandable::Write(AP4_ByteStream&)+269>:	mov    rax,QWORD PTR [rsp+0x8])
0032| 0x7fffffffdf60 --> 0x11 
0040| 0x7fffffffdf68 --> 0xfd2cec3ba1357000 
0048| 0x7fffffffdf70 --> 0x555555637810 --> 0x555555617158 --> 0x5555555835e0 (<AP4_MemoryByteStream::~AP4_MemoryByteStream()>:	endbr64)
0056| 0x7fffffffdf78 --> 0x0 
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value
Stopped reason: SIGSEGV
0x00005555555d5426 in AP4_DescriptorListWriter::Action (descriptor=0x0, this=<optimized out>) at /home/zxq/CVE_testing/sourceproject/Bento4/Source/C++/Core/Ap4Descriptor.h:108
108	        return descriptor->Write(m_Stream);

```
--- end body ---
