summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2007-10-11 22:53:08 +0000
committerDaniel Stenberg <daniel@haxx.se>2007-10-11 22:53:08 +0000
commitc61e462ae3b0c0a82a1b3d1aaf4a146c8936c58d (patch)
tree686d9477171b6db9b73dece7b1f7bd04620c1e2f
parent83ec896586c17146ed908e218fbb828392e12486 (diff)
read_mp4_tag_string() may return a NULL in the pointer so no code should rely
on the pointer being valid unless the return code is checked. This lead to the year_string being accessed with atoi() even when being NULL => crash. This fixes FS#7937. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15080 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/metadata/mp4.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/metadata/mp4.c b/apps/metadata/mp4.c
index 6f9383fd5d..4a1fba11c2 100644
--- a/apps/metadata/mp4.c
+++ b/apps/metadata/mp4.c
@@ -402,17 +402,21 @@ static bool read_mp4_tags(int fd, struct mp3entry* id3,
case MP4_cday:
read_mp4_tag_string(fd, size, &buffer, &buffer_left,
- &id3->year_string);
+ &id3->year_string);
/* Try to parse it as a year, for the benefit of the database.
*/
- id3->year = atoi(id3->year_string);
-
- if (id3->year < 1900)
+ if(id3->year_string)
{
- id3->year = 0;
+ id3->year = atoi(id3->year_string);
+ if (id3->year < 1900)
+ {
+ id3->year = 0;
+ }
}
-
+ else
+ id3->year = 0;
+
break;
case MP4_gnre: