Changelog:
============
- Fixed the decoder registering 6-byte strings in the string reference
namespace at indices 65536–4294967295 where the encoder does not,
desynchronising the namespace and resolving later string references to the
wrong value
- Fixed the IPv4/IPv6 network decoders (tags 52 and 54) silently truncating an
address byte string that is longer than the address size instead of rejecting
it as malformed
- Fixed quadratic decoding time for indefinite-length and large definite-length
byte and text strings, caused by concatenating each chunk onto the
accumulated result with + instead of building the result once
- Fixed datetime_as_timestamp encoding whole-second datetimes before 1970 or
after 2106 as floats instead of integers, because the timestamp was narrowed
through an unsigned 32-bit integer
- Fixed the encoder measuring text strings by code point count instead of UTF-8
byte length when deciding whether to add them to the string reference
namespace, desynchronising it from the decoder (which counts bytes) and
corrupting later string references for non-ASCII strings
- Fixed the decoder rejecting scoped IPv6 addresses (tag 54) with a
CBORDecodeError reading invalid types in input array; the encoder emits them
as [address, null, zone id] but the decoder only handled the network and
interface array forms, so a scoped ~ipaddress.IPv6Address could not be decoded
back
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>