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 <neol...@gmail.com>
---
 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) {
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to