GNOME Bugzilla – Bug 331543
crash on iTunes MPEG v4 AAC-LC files
Last modified: 2006-02-17 16:32:01 UTC
Steps to reproduce: Any GStreamer based player crashes immediately while trying to play iTunes AAC-LC file. Tested on gstreamer010-0.10.2 and gstreamer-0.8.11 on SuSE Linux 10.1 beta4 for AMD64. sbrabec@hammer:~> file file.m4a 06 The Promise.m4a: ISO Media, MPEG v4 system, iTunes AAC-LC sbrabec@hammer:~> gst-launch-0.10 filesrc location=file.m4a ! decodebin ! audioconvert ! audioresample ! alsasink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Segmentation fault sbrabec@hammer:~> gst-launch-0.8 filesrc location=file.m4a ! spider ! audioconvert ! audioresample ! alsasink WARNING: erroneous pipeline: no element "audioresample" Trying to run anyway. RUNNING pipeline ... Segmentation fault Note that after doing head -c 10000 on this file, the crash changes to SIGBUS. Stack trace:
+ Trace 66267
Other information: Please contact me in private mail, if you need the test file.
could you try with gst-plugins-bad CVS ?
No. it does not crash on my file.m4a. But if I try to cut it, new (incorrect) file causes SIGBUS: sbrabec@hammer:~> head -c 10000 file.m4a >file_cut.m4a sbrabec@hammer:~> gst-launch-0.10 filesrc location=file_cut.m4a ! decodebin ! audioconvert ! audioresample ! alsasink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Bus error (core dumped)
+ Trace 66273
May I ask what's the point of cutting the file ? Apart from creating a completely invalid and crashable file ?
First reason was to able to attach a small file to the original bug report. But the same crash can occur on network error when playing a stream from the web.
could you attach that cut file ?
Created attachment 59581 [details] file_cut.m4a
The problem was that qtdemux doesn't verify that the buffer returned by gst_pad_pull_range() has the requested length. Patch follows.
Created attachment 59582 [details] [review] Check returned buffer's length
Looks good, please commit.
2006-02-17 Edward Hervey <edward@fluendo.com> * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_state_header): Check that the size of the returned buffer is of the correct size because the parser assumes that. Fixes #331543.