Skip to content
Snippets Groups Projects
Commit 8bb41781 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont
Browse files

smf: handle I/O errors

parent 8463872f
No related branches found
No related tags found
No related merge requests found
......@@ -330,20 +330,21 @@ int HandleMessage (demux_t *p_demux, mtrk_t *tr, es_out_t *out)
block->p_buffer[0] = event;
if (first & 0x80)
{
vlc_stream_Read (s, block->p_buffer + 1, datalen);
if (vlc_stream_Read(s, block->p_buffer + 1, datalen) < datalen)
goto error;
}
else
{
if (datalen == 0)
{
{ /* implicit running status requires non-empty payload */
msg_Err (p_demux, "malformatted MIDI event");
block_Release(block);
return -1; /* implicit running status requires non-empty payload */
goto error;
}
block->p_buffer[1] = first;
if (datalen > 1)
vlc_stream_Read (s, block->p_buffer + 2, datalen - 1);
if (datalen > 1
&& vlc_stream_Read(s, block->p_buffer + 2, datalen - 1) < datalen - 1)
goto error;
}
send:
......@@ -360,6 +361,10 @@ skip:
tr->offset = vlc_stream_Tell (s) - tr->start;
return 0;
error:
block_Release(block);
return -1;
}
static int SeekSet0 (demux_t *demux)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment