From 12d132f31c7cec4d6d88cdc88b01e26ce33703a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Roth?= Date: Sun, 30 Mar 2014 13:21:17 -0300 Subject: [PATCH] libdvbv5: fix lost ressource in atsc_eit MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit if the title of the EIT event is longer than the available data, make sure the allocated buffer is not lost Signed-off-by: André Roth Signed-off-by: Mauro Carvalho Chehab --- lib/libdvbv5/descriptors/atsc_eit.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/libdvbv5/descriptors/atsc_eit.c b/lib/libdvbv5/descriptors/atsc_eit.c index 92764df..9e1397d 100644 --- a/lib/libdvbv5/descriptors/atsc_eit.c +++ b/lib/libdvbv5/descriptors/atsc_eit.c @@ -74,6 +74,11 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, atsc_time(event->start_time, &event->start); event->source_id = eit->header.id; + if(!*head) + *head = event; + if(last) + last->next = event; + size = event->title_length - 1; if (p + size > endbuf) { dvb_logerr("%s: short read %zd/%zd bytes", __func__, @@ -83,11 +88,6 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, /* TODO: parse title */ p += size; - if(!*head) - *head = event; - if(last) - last->next = event; - /* get the descriptors for each program */ size = sizeof(union atsc_table_eit_desc_length); if (p + size > endbuf) { -- 2.7.4