timeshift: fix use after free() bug.
This commit is contained in:
parent
4e67a1345e
commit
551e5ff8f9
1 changed files with 7 additions and 2 deletions
|
@ -56,6 +56,7 @@ void timeshift_term ( void )
|
|||
static void timeshift_input
|
||||
( void *opaque, streaming_message_t *sm )
|
||||
{
|
||||
int exit = 0;
|
||||
timeshift_t *ts = opaque;
|
||||
|
||||
pthread_mutex_lock(&ts->state_mutex);
|
||||
|
@ -81,6 +82,11 @@ static void timeshift_input
|
|||
streaming_target_deliver2(ts->output, streaming_msg_clone(sm));
|
||||
}
|
||||
|
||||
/* Check for exit */
|
||||
if (sm->sm_type == SMT_EXIT ||
|
||||
(sm->sm_type == SMT_STOP && sm->sm_code == 0))
|
||||
exit = 1;
|
||||
|
||||
/* Buffer to disk */
|
||||
if (ts->state >= TS_LIVE) {
|
||||
sm->sm_time = getmonoclock();
|
||||
|
@ -89,8 +95,7 @@ static void timeshift_input
|
|||
streaming_msg_free(sm);
|
||||
|
||||
/* Exit/Stop */
|
||||
if (sm->sm_type == SMT_EXIT ||
|
||||
(sm->sm_type == SMT_STOP && sm->sm_code == 0)) {
|
||||
if (exit) {
|
||||
timeshift_write_exit(ts->rd_pipe.wr);
|
||||
ts->state = TS_EXIT;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue