diff options
author | Daniel Stenberg <daniel@haxx.se> | 2007-10-11 22:53:08 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2007-10-11 22:53:08 +0000 |
commit | c61e462ae3b0c0a82a1b3d1aaf4a146c8936c58d (patch) | |
tree | 686d9477171b6db9b73dece7b1f7bd04620c1e2f | |
parent | 83ec896586c17146ed908e218fbb828392e12486 (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.c | 16 |
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: |