diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2006-09-19 18:27:43 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2006-09-19 18:27:43 +0000 |
commit | 7f1346d641b3d9ec26bc0e1d252b332443443cfa (patch) | |
tree | a6fa001b6bdadc1ca39a4281120476cfe591a8d2 | |
parent | f5520f5cef8a981dfe7da7ef8c636d6177ff55f4 (diff) | |
download | rockbox-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.c | 6 |
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. */ |