Changeset e1066b6e97b167911e96a618990cbe8ceb516977
- Timestamp:
- 11/10/07 00:04:56
(1 year ago)
- Author:
- Laurent Aimar <fenrir@videolan.org>
- git-committer:
- Laurent Aimar <fenrir@videolan.org> 1192053896 +0000
- git-parent:
[5c1bbbefaf98811bf723297694f964951915c059]
- git-author:
- Laurent Aimar <fenrir@videolan.org> 1192053896 +0000
- Message:
id3tag: fixed segfault (introduced with demux_meta_t)
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r1e9f026 |
re1066b6 |
|
| 66 | 66 | int i; |
|---|
| 67 | 67 | |
|---|
| 68 | | TAB_INIT( p_demux_meta->i_attachments, p_demux_meta->attachments ); |
|---|
| 69 | | p_demux_meta->p_meta = NULL; |
|---|
| 70 | | |
|---|
| 71 | 68 | p_id3_tag = id3_tag_parse( p_data, i_size ); |
|---|
| 72 | 69 | if( !p_id3_tag ) |
|---|
| 73 | 70 | return; |
|---|
| 74 | 71 | |
|---|
| 75 | | p_demux_meta->p_meta = p_meta = vlc_meta_New(); |
|---|
| | 72 | if( !p_demux_meta->p_meta ) |
|---|
| | 73 | p_demux_meta->p_meta = vlc_meta_New(); |
|---|
| | 74 | p_meta = p_demux_meta->p_meta; |
|---|
| 76 | 75 | |
|---|
| 77 | 76 | #define ID_IS( a ) (!strcmp( p_frame->id, a )) |
|---|
| … | … | |
| 266 | 265 | static void ParseAPEvXTag( demux_t *p_demux, uint8_t *p_data, int i_data ) |
|---|
| 267 | 266 | { |
|---|
| 268 | | vlc_meta_t *p_meta = (vlc_meta_t *)p_demux->p_private; |
|---|
| | 267 | demux_meta_t *p_demux_meta = (demux_meta_t*)p_demux->p_private; |
|---|
| | 268 | vlc_meta_t *p_meta; |
|---|
| 269 | 269 | vlc_bool_t b_start; |
|---|
| 270 | 270 | vlc_bool_t b_end; |
|---|
| … | … | |
| 280 | 280 | return; |
|---|
| 281 | 281 | |
|---|
| | 282 | if( !p_demux_meta->p_meta ) |
|---|
| | 283 | p_demux_meta->p_meta = vlc_meta_New(); |
|---|
| | 284 | p_meta = p_demux_meta->p_meta; |
|---|
| | 285 | |
|---|
| 282 | 286 | if( b_start ) |
|---|
| 283 | 287 | { |
|---|
| … | … | |
| 297 | 301 | if( i_entry <= 0 ) |
|---|
| 298 | 302 | return; |
|---|
| 299 | | |
|---|
| 300 | | if( !p_meta ) |
|---|
| 301 | | p_demux->p_private = p_meta = vlc_meta_New(); |
|---|
| 302 | 303 | |
|---|
| 303 | 304 | while( i_entry > 0 && i_data >= 10 ) |
|---|
| … | … | |
| 482 | 483 | static int ParseTags( vlc_object_t *p_this ) |
|---|
| 483 | 484 | { |
|---|
| 484 | | demux_t *p_demux = (demux_t *)p_this; |
|---|
| 485 | | vlc_bool_t b_seekable; |
|---|
| 486 | | int64_t i_init; |
|---|
| | 485 | demux_t *p_demux = (demux_t *)p_this; |
|---|
| | 486 | demux_meta_t *p_demux_meta = (demux_meta_t*)p_demux->p_private; |
|---|
| | 487 | vlc_bool_t b_seekable; |
|---|
| | 488 | int64_t i_init; |
|---|
| 487 | 489 | |
|---|
| 488 | 490 | msg_Dbg( p_demux, "checking for ID3v1/2 and APEv1/2 tags" ); |
|---|
| 489 | | |
|---|
| 490 | 491 | stream_Control( p_demux->s, STREAM_CAN_FASTSEEK, &b_seekable ); |
|---|
| 491 | 492 | if( !b_seekable ) |
|---|
| 492 | | return VLC_SUCCESS; |
|---|
| | 493 | return VLC_EGENERIC; |
|---|
| 493 | 494 | |
|---|
| 494 | 495 | i_init = stream_Tell( p_demux->s ); |
|---|
| | 496 | |
|---|
| | 497 | TAB_INIT( p_demux_meta->i_attachments, p_demux_meta->attachments ); |
|---|
| | 498 | p_demux_meta->p_meta = NULL; |
|---|
| 495 | 499 | |
|---|
| 496 | 500 | /* */ |
|---|
| … | … | |
| 505 | 509 | */ |
|---|
| 506 | 510 | stream_Seek( p_demux->s, i_init ); |
|---|
| | 511 | if( !p_demux_meta->p_meta && p_demux_meta->i_attachments <= 0 ) |
|---|
| | 512 | return VLC_EGENERIC; |
|---|
| 507 | 513 | return VLC_SUCCESS; |
|---|
| 508 | 514 | } |
|---|
| | 515 | |
|---|
| rf06a603 |
re1066b6 |
|
| 232 | 232 | demux_t *p_demux = (demux_t *)p_this; |
|---|
| 233 | 233 | demux_meta_t *p_demux_meta = (demux_meta_t*)p_demux->p_private; |
|---|
| 234 | | vlc_meta_t *p_meta = p_demux_meta->p_meta; |
|---|
| | 234 | vlc_meta_t *p_meta; |
|---|
| 235 | 235 | |
|---|
| 236 | 236 | TAB_INIT( p_demux_meta->i_attachments, p_demux_meta->attachments ); |
|---|