diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py index 6a3334f2f..ea914b89a 100644 --- a/api/funkwhale_api/music/metadata.py +++ b/api/funkwhale_api/music/metadata.py @@ -697,6 +697,12 @@ class AlbumSerializer(serializers.Serializer): return v +def get_valid_position(v): + if v <= 0: + v = 1 + return v + + class PositionField(serializers.CharField): def to_internal_value(self, v): v = super().to_internal_value(v) @@ -704,15 +710,15 @@ class PositionField(serializers.CharField): return v try: - return int(v) + return get_valid_position(int(v)) except ValueError: # maybe the position is of the form "1/4" pass try: - return int(v.split("/")[0]) + return get_valid_position(int(v.split("/")[0])) except (ValueError, AttributeError, IndexError): - pass + return class DescriptionField(serializers.CharField): diff --git a/changes/changelog.d/1193.bugfix b/changes/changelog.d/1193.bugfix new file mode 100644 index 000000000..2362eef8e --- /dev/null +++ b/changes/changelog.d/1193.bugfix @@ -0,0 +1 @@ +Fixed crash with negative track position in file tags (#1193) \ No newline at end of file