From 471fcb70dad5ebc1ec5b3a901074d972955b0fe2 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Fri, 16 Apr 2021 11:03:11 +0900 Subject: [PATCH] tdm_client: check the dereference varaibales check the private_output and the private_client at tdm_client_vblank_destory function. It prevent the segmentation fault due to them. Change-Id: Ifcb01380be362cd3d7151906bccc1d4a59ea48e1 --- client/tdm_client.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/client/tdm_client.c b/client/tdm_client.c index 0e50916..f322a49 100644 --- a/client/tdm_client.c +++ b/client/tdm_client.c @@ -1306,13 +1306,27 @@ void tdm_client_vblank_destroy(tdm_client_vblank *vblank) { tdm_private_client_vblank *private_vblank; + tdm_private_client_output *private_output; tdm_private_client *private_client; tdm_client_wait_info *w = NULL, *ww = NULL; TDM_RETURN_IF_FAIL(vblank != NULL); private_vblank = vblank; - private_client = private_vblank->private_output->private_client; + + private_output = private_vblank->private_output; + if (!private_output) { + TDM_WRN("private_output is already destroyed."); + free(private_vblank); + return; + } + + private_client = private_output->private_client; + if (!private_client) { + TDM_WRN("private_client is already destroyed."); + free(private_vblank); + return; + } pthread_mutex_lock(&private_client->lock); -- 2.7.4