From: André Roth Date: Sun, 30 Mar 2014 16:21:17 +0000 (-0300) Subject: libdvbv5: fix lost ressource in atsc_eit X-Git-Tag: v4l-utils-1.2.0~106 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=12d132f31c7cec4d6d88cdc88b01e26ce33703a2;p=platform%2Fupstream%2Fv4l-utils.git libdvbv5: fix lost ressource in atsc_eit 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 --- 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) {