Skip Menu |
 

This queue is for tickets about the Audio-Scan CPAN distribution.

Report information
The Basics
Id: 64084
Status: new
Priority: 0/
Queue: Audio-Scan

People
Owner: Nobody in particular
Requestors: eric [...] gus.to
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 0.85
Fixed in: (no value)



This file (bt.mp3, a truncated mp3 from eMusic) crashes Audio::Scan with a segfault on Perl 5.8.* (doesn't do it in Perl 5.10). All eMusic files will segfault Audio::Scan on Perl 5.8 because of this problem. The problem is that in id3.c, _id3_parse_v2_frame_data(), this bit of code: if ( tmp == end ) { // Convert raw number to genre string av_push( genres, newSVpv( _id3_genre_name((char *)sptr), 0 ) ); will pass NULL/0 as the first arg to newSVpv, which according to the XS docs, will then have a strlen applied to it, causing a segfault. The best cure is probably to fix it a little above this test: // v2.4 handles multiple genres using null char separators (or $00 $00 in UTF-16), // this is handled by _id3_get_utf8_string read += _id3_get_utf8_string(id3, &value, size - read, encoding); if (value != NULL && SvPOK(value)) { sptr = SvPVX(value); by adding " && SvPVX(value) != 0" to the test. This prevents a bogus (null) TCON (genre) tag from being created in eMusic mp3 files.
Subject: bt.mp3
Download bt.mp3
audio/mp3 20k

Message body not shown because it is not plain text.



This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.