utils: Fix bugs in DataObject encoders
The DataObject is some weird / rarely used different code than the normal TLV encoder/decoder. It has apparently so far only been used for decoding, without testing the encoding side, resulting in related bugs. Let's fix those that I encountered today, and add a test case. Change-Id: I31370066f43c22fc3ce9e2b9ee75986a652f6fc4
This commit is contained in:
@@ -1333,7 +1333,7 @@ class DataObject(abc.ABC):
|
||||
bytes encoded in TLV format.
|
||||
"""
|
||||
val = self.to_bytes()
|
||||
return bytes(self._compute_tag()) + bytes(len(val)) + val
|
||||
return bertlv_encode_tag(self._compute_tag()) + bertlv_encode_len(len(val)) + val
|
||||
|
||||
# 'codec' interface
|
||||
def decode(self, binary: bytes) -> Tuple[dict, bytes]:
|
||||
@@ -1481,7 +1481,8 @@ class DataObjectChoice(DataObjectCollection):
|
||||
|
||||
# 'codec' interface
|
||||
def encode(self, decoded) -> bytes:
|
||||
obj = self.members_by_name(decoded[0])
|
||||
obj = self.members_by_name[list(decoded)[0]]
|
||||
obj.decoded = list(decoded.values())[0]
|
||||
return obj.to_tlv()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user