summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2011-01-30 20:23:55 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2011-01-30 20:23:55 +0000
commitdedde474248d1e75396b9e90e141284901e588f1 (patch)
tree5769e00fd7f808b94adfdefdb2664b3faffcf002
parentb5562a10c8fe37833183be472d46301d56e7b36f (diff)
downloadrockbox-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.h2
-rw-r--r--apps/metadata/id3tags.c6
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
181enum { 183enum {
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