hlsdemux: Segfaults if playlist has no media files
authorAlex Ashley <bugzilla@ashley-family.net>
Tue, 25 Feb 2014 11:45:46 +0000 (11:45 +0000)
committerSebastian Dröge <sebastian@centricular.com>
Sat, 1 Mar 2014 15:34:59 +0000 (16:34 +0100)
commitb7ef52c515d9de53a08c450eef84492ba79796b3
tree86f271bd1f0829979059fa955d029c9cf6f2e23a
parent9cc52bd874ef2cebd06e2571c4788817eac05966
hlsdemux: Segfaults if playlist has no media files

hlsdemux causes a null pointer dereference if the media playlist
does not contain any media files. The gst_m3u8_client_get_duration
function assumes that demux->client->current->files is valid when
computing duration.

gst_m3u8_client_update needed to be modified to check for the
case of downloading an M3U8 file that doesn't contain any media
files, and returning an error to gsthlsdemux.c

This bug can be reproduced by creating a master m3u8 file that
contains one media playlist that points back to the master m3u8
file.  For example create a file called bug725134.m3u8:
  #EXTM3U
  #EXT-X-VERSION:4
  #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS="avc1.42001f mp4a.40.2", RESOLUTION=640x352
  bug725134.m3u8

https://bugzilla.gnome.org/show_bug.cgi?id=725134
ext/hls/m3u8.c