From: Jaroslav Kysela Date: Thu, 13 Sep 2018 06:41:32 +0000 (+0200) Subject: descrambler: fix leak in descrambler_notify_deliver() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bfa654f78776282065f49404cfc383962cddaaab;p=thirdparty%2Ftvheadend.git descrambler: fix leak in descrambler_notify_deliver() --- diff --git a/src/descrambler/descrambler.c b/src/descrambler/descrambler.c index 1ed2a2f9f..7d0a8c54f 100644 --- a/src/descrambler/descrambler.c +++ b/src/descrambler/descrambler.c @@ -469,7 +469,6 @@ static void descrambler_notify_deliver( mpegts_service_t *t, descramble_info_t *di ) { streaming_message_t *sm; - struct descramble_info *di2; int r; lock_assert(&t->s_stream_mutex); @@ -482,11 +481,7 @@ descrambler_notify_deliver( mpegts_service_t *t, descramble_info_t *di ) } memcpy(t->s_descramble_info, di, sizeof(*di)); - di2 = malloc(sizeof(*di2)); - memcpy(di2, di, sizeof(*di2)); - sm = streaming_msg_create_data(SMT_DESCRAMBLE_INFO, di2); - sm->sm_data = di; - + sm = streaming_msg_create_data(SMT_DESCRAMBLE_INFO, di); streaming_service_deliver((service_t *)t, sm); } @@ -499,9 +494,11 @@ descrambler_notify_nokey( th_descrambler_runtime_t *dr ) tvhdebug(LS_DESCRAMBLER, "no key for service='%s'", t->s_dvb_svcname); di = calloc(1, sizeof(*di)); - di->pid = t->s_components.set_pmt_pid; + pthread_mutex_lock(&t->s_stream_mutex); + di->pid = t->s_components.set_pmt_pid; descrambler_notify_deliver(t, di); + pthread_mutex_unlock(&t->s_stream_mutex); } void