From b16898743d437c16d216892ea9c8683514257d4b Mon Sep 17 00:00:00 2001 From: Matthias Kiefer Date: Fri, 23 Jan 2015 13:44:08 +0100 Subject: [PATCH] Fixed IndexError on reading embedded cover art with invalid cover type --- beets/mediafile.py | 6 +++++- test/rsrc/image_unknown_type.mp3 | Bin 0 -> 10452 bytes test/test_mediafile.py | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100755 test/rsrc/image_unknown_type.mp3 diff --git a/beets/mediafile.py b/beets/mediafile.py index 7522acf0ab..f580dccfa1 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -326,7 +326,11 @@ def __init__(self, data, desc=None, type=None): self.data = data self.desc = desc if isinstance(type, int): - type = list(ImageType)[type] + try: + type = list(ImageType)[type] + except IndexError: + log.warn("ignoring unknown image type index {}", type) + type = ImageType.other self.type = type @property diff --git a/test/rsrc/image_unknown_type.mp3 b/test/rsrc/image_unknown_type.mp3 new file mode 100755 index 0000000000000000000000000000000000000000..441adf62ac0699ded6604427067c2fdde3510cca GIT binary patch literal 10452 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