diff options
author | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-01-30 20:23:55 +0000 |
---|---|---|
committer | Andree Buschmann <AndreeBuschmann@t-online.de> | 2011-01-30 20:23:55 +0000 |
commit | dedde474248d1e75396b9e90e141284901e588f1 (patch) | |
tree | 5769e00fd7f808b94adfdefdb2664b3faffcf002 | |
parent | b5562a10c8fe37833183be472d46301d56e7b36f (diff) | |
download | rockbox-dedde474248d1e75396b9e90e141284901e588f1.tar.gz rockbox-dedde474248d1e75396b9e90e141284901e588f1.zip |
Limit the size of each ID3 metadata item to avoid that the metadata buffer is filled by single items. Fixes FS#11875, FS#9805 and FS#9299.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29174 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/metadata.h | 2 | ||||
-rw-r--r-- | apps/metadata/id3tags.c | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/apps/metadata.h b/apps/metadata.h index 8c7188db24..f366aea61c 100644 --- a/apps/metadata.h +++ b/apps/metadata.h | |||
@@ -174,8 +174,10 @@ extern const struct afmt_entry audio_formats[AFMT_NUM_CODECS]; | |||
174 | 174 | ||
175 | #if MEMORYSIZE > 2 | 175 | #if MEMORYSIZE > 2 |
176 | #define ID3V2_BUF_SIZE 900 | 176 | #define ID3V2_BUF_SIZE 900 |
177 | #define ID3V2_MAX_ITEM_SIZE 120 | ||
177 | #else | 178 | #else |
178 | #define ID3V2_BUF_SIZE 300 | 179 | #define ID3V2_BUF_SIZE 300 |
180 | #define ID3V2_MAX_ITEM_SIZE 60 | ||
179 | #endif | 181 | #endif |
180 | 182 | ||
181 | enum { | 183 | enum { |
diff --git a/apps/metadata/id3tags.c b/apps/metadata/id3tags.c index f3ddd73077..75056a273c 100644 --- a/apps/metadata/id3tags.c +++ b/apps/metadata/id3tags.c | |||
@@ -836,6 +836,12 @@ void setid3v2title(int fd, struct mp3entry *entry) | |||
836 | if(framelen >= buffersize - bufferpos) | 836 | if(framelen >= buffersize - bufferpos) |
837 | framelen = buffersize - bufferpos - 1; | 837 | framelen = buffersize - bufferpos - 1; |
838 | 838 | ||
839 | /* Limit the maximum length of an id3 data item to ID3V2_MAX_ITEM_SIZE | ||
840 | bytes. This reduces the chance that the available buffer is filled | ||
841 | by single metadata items like large comments. */ | ||
842 | if (ID3V2_MAX_ITEM_SIZE < framelen) | ||
843 | framelen = ID3V2_MAX_ITEM_SIZE; | ||
844 | |||
839 | logf("id3v2 frame: %.4s", header); | 845 | logf("id3v2 frame: %.4s", header); |
840 | 846 | ||
841 | /* Check for certain frame headers | 847 | /* Check for certain frame headers |