summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2006-09-19 18:27:43 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2006-09-19 18:27:43 +0000
commit7f1346d641b3d9ec26bc0e1d252b332443443cfa (patch)
treea6fa001b6bdadc1ca39a4281120476cfe591a8d2
parentf5520f5cef8a981dfe7da7ef8c636d6177ff55f4 (diff)
downloadrockbox-7f1346d641b3d9ec26bc0e1d252b332443443cfa.tar.gz
rockbox-7f1346d641b3d9ec26bc0e1d252b332443443cfa.zip
Fixed a division by zero in mp3 metadata parser.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11003 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/id3.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/firmware/id3.c b/firmware/id3.c
index 3f2ba23684..5dfb3fbe50 100644
--- a/firmware/id3.c
+++ b/firmware/id3.c
@@ -1000,7 +1000,11 @@ static int getsonglength(int fd, struct mp3entry *entry)
1000 1000
1001 if(filetime == 0) 1001 if(filetime == 0)
1002 { 1002 {
1003 filetime = (entry->filesize - bytecount) / (info.bitrate / 8); 1003 /* Prevent a division by zero */
1004 if (info.bitrate < 8)
1005 filetime = 0;
1006 else
1007 filetime = (entry->filesize - bytecount) / (info.bitrate / 8);
1004 /* bitrate is in kbps so this delivers milliseconds. Doing bitrate / 8 1008 /* bitrate is in kbps so this delivers milliseconds. Doing bitrate / 8
1005 * instead of filesize * 8 is exact, because mpeg audio bitrates are 1009 * instead of filesize * 8 is exact, because mpeg audio bitrates are
1006 * always multiples of 8, and it avoids overflows. */ 1010 * always multiples of 8, and it avoids overflows. */