From 38a3d3a21a1d9a9fa52e54fcb92e545e478b468f Mon Sep 17 00:00:00 2001 From: Ethan Haley Date: Wed, 11 May 2022 18:34:17 +0100 Subject: [PATCH 1/2] Fix block length assertion when decoding group --- sbe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbe/__init__.py b/sbe/__init__.py index fbb865d..549b964 100644 --- a/sbe/__init__.py +++ b/sbe/__init__.py @@ -499,7 +499,7 @@ def decode(self, buffer: Union[bytes, memoryview]) -> dict: format_str_parts = [] for f in m.fields: if isinstance(f, Group): - assert cursor.val >= header.value['blockLength'] + assert cursor.val <= header.value['blockLength'] if cursor.val < header.value['blockLength']: format_str_parts.append(str(header.value['blockLength'] - cursor.val) + 'x') cursor.val = header.value['blockLength'] From ec55eaab2e036a1b49cf0e3ada07386622a3be85 Mon Sep 17 00:00:00 2001 From: Ethan Haley Date: Wed, 11 May 2022 18:46:48 +0100 Subject: [PATCH 2/2] Remove block length assertion altogether! The assertion for <= is only correct for the first group in a message, but it is bad for any subsequent groups --- sbe/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sbe/__init__.py b/sbe/__init__.py index 549b964..5d32b9a 100644 --- a/sbe/__init__.py +++ b/sbe/__init__.py @@ -499,7 +499,6 @@ def decode(self, buffer: Union[bytes, memoryview]) -> dict: format_str_parts = [] for f in m.fields: if isinstance(f, Group): - assert cursor.val <= header.value['blockLength'] if cursor.val < header.value['blockLength']: format_str_parts.append(str(header.value['blockLength'] - cursor.val) + 'x') cursor.val = header.value['blockLength']