From b482f4af6837162f405120bc2377c1b74d62077e Mon Sep 17 00:00:00 2001 From: Voltrex Date: Sun, 13 Sep 2026 10:33:16 -0400 Subject: [PATCH] Warn safely for unknown malformed fields --- fitparse/base.py | 3 ++- tests/test.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fitparse/base.py b/fitparse/base.py index b0ebf87..5d3c6a2 100644 --- a/fitparse/base.py +++ b/fitparse/base.py @@ -296,7 +296,8 @@ def _parse_definition_message(self, header): if (field_size % base_type.size) != 0: warnings.warn( "Invalid field size %d for field '%s' of type '%s' (expected a multiple of %d); falling back to byte encoding." % ( - field_size, field.name, base_type.name, base_type.size) + field_size, field.name if field else 'unknown_%d' % field_def_num, + base_type.name, base_type.size) ) base_type = BASE_TYPE_BYTE diff --git a/tests/test.py b/tests/test.py index e4851d5..1677b88 100755 --- a/tests/test.py +++ b/tests/test.py @@ -2,6 +2,7 @@ import csv import datetime +import io import os from struct import pack import warnings @@ -74,6 +75,13 @@ def testfile(filename): class FitFileTestCase(unittest.TestCase): + def test_unknown_field_with_incompatible_size_warns(self): + definition = b'\x40\x00\x00' + pack('