From: Kyle Sanderson Date: Sat, 27 Jun 2015 01:38:42 +0000 (-0700) Subject: Fix invalid memory usage in mpegts/iptv, mpegts/tsfile, subscriptions, and tvhtime X-Git-Tag: v4.2.1~2217 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b1d80b311ef301cb9203541344238fd2cd1244e;p=thirdparty%2Ftvheadend.git Fix invalid memory usage in mpegts/iptv, mpegts/tsfile, subscriptions, and tvhtime --- diff --git a/src/input/mpegts/iptv/iptv_rtsp.c b/src/input/mpegts/iptv/iptv_rtsp.c index a8ca56e96..08e44d762 100644 --- a/src/input/mpegts/iptv/iptv_rtsp.c +++ b/src/input/mpegts/iptv/iptv_rtsp.c @@ -197,12 +197,14 @@ iptv_rtsp_stop ( iptv_mux_t *im ) { rtsp_priv_t *rp = im->im_data; - int play = rp->play; + int play; lock_assert(&global_lock); if (rp == NULL) return; + + play = rp->play; im->im_data = NULL; rp->hc->hc_aux = NULL; if (play) diff --git a/src/input/mpegts/tsfile/tsfile.c b/src/input/mpegts/tsfile/tsfile.c index 1cfc4e31a..1581683e4 100644 --- a/src/input/mpegts/tsfile/tsfile.c +++ b/src/input/mpegts/tsfile/tsfile.c @@ -47,14 +47,17 @@ tsfile_network_create_service { pthread_mutex_lock(&tsfile_lock); mpegts_service_t *s = mpegts_service_create1(NULL, mm, sid, pmt_pid, NULL); - s->s_config_save = tsfile_service_config_save; - pthread_mutex_unlock(&tsfile_lock); // TODO: HACK: REMOVE ME if (s) { + s->s_config_save = tsfile_service_config_save; + pthread_mutex_unlock(&tsfile_lock); channel_t *c = channel_create(NULL, NULL, NULL); service_mapper_link((service_t*)s, c, NULL); } + else + pthread_mutex_unlock(&tsfile_lock); + return s; } diff --git a/src/subscriptions.c b/src/subscriptions.c index df8930aa4..e5a507074 100644 --- a/src/subscriptions.c +++ b/src/subscriptions.c @@ -549,13 +549,15 @@ subscription_input(void *opauqe, streaming_message_t *sm) void subscription_unsubscribe(th_subscription_t *s, int quiet) { - service_t *t = s->ths_service; + service_t *t; char buf[512]; size_t l = 0; if (s == NULL) return; + t = s->ths_service; + lock_assert(&global_lock); s->ths_state = SUBSCRIPTION_ZOMBIE; diff --git a/src/tvhtime.c b/src/tvhtime.c index ae4688dfc..2717caa19 100644 --- a/src/tvhtime.c +++ b/src/tvhtime.c @@ -67,8 +67,9 @@ ntp_shm_init ( void ) return NULL; shmptr = shmat(shmid, 0, 0); - memset(shmptr, 0, sizeof(ntp_shm_t)); + if (shmptr) { + memset(shmptr, 0, sizeof(ntp_shm_t)); shmptr->mode = 1; shmptr->precision = -1; shmptr->nsamples = 1;