From e65d06dc6aee7c97b33d9d08f78f9d2a80cf4b6f Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sat, 21 Mar 2020 19:41:28 +0900 Subject: [PATCH] h265parser: Fix registered user data SEI leak ... and add fix for the SEI data in gst_h265_sei_copy() --- gst-libs/gst/codecparsers/gsth265parser.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gst-libs/gst/codecparsers/gsth265parser.c b/gst-libs/gst/codecparsers/gsth265parser.c index 092e49e5c0..41d1d8516f 100644 --- a/gst-libs/gst/codecparsers/gsth265parser.c +++ b/gst-libs/gst/codecparsers/gsth265parser.c @@ -2749,6 +2749,15 @@ gst_h265_sei_copy (GstH265SEIMessage * dst_sei, src_pic_timing->du_cpb_removal_delay_increment_minus1[i]; } } + } else if (dst_sei->payloadType == GST_H265_SEI_REGISTERED_USER_DATA) { + GstH265RegisteredUserData *dst_rud = &dst_sei->payload.registered_user_data; + const GstH265RegisteredUserData *src_rud = + &src_sei->payload.registered_user_data; + + if (src_rud->size) { + dst_rud->data = g_malloc (src_rud->size); + memcpy ((guint8 *) dst_rud->data, src_rud->data, src_rud->size); + } } return TRUE; @@ -2773,6 +2782,10 @@ gst_h265_sei_free (GstH265SEIMessage * sei) } pic_timing->num_nalus_in_du_minus1 = 0; pic_timing->du_cpb_removal_delay_increment_minus1 = 0; + } else if (sei->payloadType == GST_H265_SEI_REGISTERED_USER_DATA) { + GstH265RegisteredUserData *rud = &sei->payload.registered_user_data; + g_free ((guint8 *) rud->data); + rud->data = NULL; } }