]> git.sesse.net Git - vlc/commitdiff
MP4: fix off-by-one genre metadata reading
authorJean-Baptiste Kempf <jb@videolan.org>
Sun, 23 May 2010 22:42:04 +0000 (00:42 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Sun, 23 May 2010 22:42:04 +0000 (00:42 +0200)
modules/demux/mp4/libmp4.c
modules/demux/mp4/mp4.c

index 11446e4ae90540349811195b17610758cfc03ef8..e8e10e530797c80cd4e5c703ab9bcbeda8b99807 100644 (file)
@@ -1172,6 +1172,8 @@ static int MP4_ReadBox_gnre( stream_t *p_stream, MP4_Box_t *p_box )
     MP4_GET4BYTES( i_version );
     MP4_GET4BYTES( i_reserved );
     MP4_GET2BYTES( p_gnre->i_genre );
+    if( p_gnre->i_genre == 0 )
+        MP4_READBOX_EXIT( 0 );
 #ifdef MP4_VERBOSE
     msg_Dbg( p_stream, "read box: \"gnre\" genre=%i", p_gnre->i_genre );
 #endif
index 24e09ef8d5f12337765d3811889df73bde62cf54..b044ea9b672c40846d8a5c5bb1039d17d494c5e5 100644 (file)
@@ -905,8 +905,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                     break;
 
                 case FOURCC_gnre:
-                    if( p_0xa9xxx->data.p_gnre->i_genre < NUM_GENRES )
-                        vlc_meta_SetGenre( p_meta, ppsz_genres[p_0xa9xxx->data.p_gnre->i_genre] );
+                    if( p_0xa9xxx->data.p_gnre->i_genre <= NUM_GENRES )
+                        vlc_meta_SetGenre( p_meta, ppsz_genres[p_0xa9xxx->data.p_gnre->i_genre - 1] );
                     break;
 
                 case FOURCC_0xa9alb: /* Album */