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>
Upgrade to release 6.1.1:
- Fixed cbor2.load() returning corrupted data for payloads exceeding
4096 bytes
From 6.1.0:
- Added the allow_duplicate_keys parameter to CBORDecoder, load and
loads (default: True). When set to False, a CBORDecodeError is raised
upon encountering a duplicate key within the same map.
- Added support for decoding from any object supporting the buffer API
(e.g. memoryview or bytearray) in addition to bytes
- Fixed compatibility issues with 32-bit systems
From 6.0.1:
- Fixed an error in the mutability logic during decoding, leading to
values being decoded as immutable in unexpected places
From 6.0.0:
- MAJOR REWRITE: The Python and C implementations of the encoder and
decoder were replaced with a single, Rust-based implementation in the
interest of maintainability.
- BACKWARD INCOMPATIBLE Changed the signature of the tag_hook decoder
callables to accept (CBORTag, immutable as arguments instead of
CBORDecoder, CBORTag)
- BACKWARD INCOMPATIBLE Changed the signature of the object_hook decoder
callables to accept (Mapping[Any, Any], bool) instead of (CBORDecoder,
dict[Any, Any])
- BACKWARD INCOMPATIBLE Removed the break_marker singleton as no longer
necessary
- BACKWARD INCOMPATIBLE Removed the CBORDecodeValueError exception,
instead chaining ValueError or TypeError to a CBORDecodeError
- BACKWARD INCOMPATIBLE Changed the decoding of semantic tag 261 to
yield an IPv4Interface or IPv6Interface if the address contains host
bits
- BACKWARD INCOMPATIBLE Removed the individual decoding functions from
the API as they were mistakenly called directly by users. Please open
an issue if you need them back.
- BACKWARD INCOMPATIBLE Changed the encoding of IP addresses to use the
semantic tags 52 and 54 instead of the deprecated 260 and 261
- BACKWARD INCOMPATIBLE Dropped the deprecated cbor2.decoder and
cbor2.encoder modules - everything in the API is now importable
directly from cbor2
- BACKWARD INCOMPATIBLE The cbor2.FrozenDict class has now been renamed
frozendict and is not available on Python 3.15 where the built-in
frozendict class must be used instead
- Added the semantic_decoders decoder option to add or override decoders
for specific semantic tags
- Added the immutable decoder flag to always use immutable containers
where possible when decoding a CBOR stream
- Added the allow_indefinite decoder option to optionally disallow
indefinite-length strings and containers
- Dropped support for Python 3.9
- Fixed the decoder not rejecting invalid two-byte simple value
sequences (0xF800 - 0xF81F)
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>