add verification for tdm_display 13/163613/2
authorRoman Marchenko <r.marchenko@samsung.com>
Fri, 8 Dec 2017 09:25:03 +0000 (11:25 +0200)
committerRoman Marchenko <r.marchenko@samsung.com>
Tue, 12 Dec 2017 10:18:09 +0000 (12:18 +0200)
Change-Id: I7f54f16c58fd13a079344075be3244f2f8e82488
Signed-off-by: Roman Marchenko <r.marchenko@samsung.com>
src/tdm.c
src/tdm_display.c
src/tdm_private.h
src/tdm_vblank.c

index a66ebad..155a542 100644 (file)
--- a/src/tdm.c
+++ b/src/tdm.c
@@ -662,6 +662,7 @@ tdm_display_update(tdm_display *dpy)
        tdm_error ret;
 
        TDM_RETURN_VAL_IF_FAIL(dpy != NULL, TDM_ERROR_INVALID_PARAMETER);
+       TDM_RETURN_VAL_IF_FAIL(tdm_display_is_valide(dpy), TDM_ERROR_INVALID_PARAMETER);
 
        private_display = dpy;
        _pthread_mutex_lock(&private_display->lock);
@@ -1080,6 +1081,8 @@ tdm_display_deinit(tdm_display *dpy)
        if (!private_display)
                return;
 
+       TDM_RETURN_IF_FAIL(tdm_display_is_valide(dpy));
+
        pthread_mutex_lock(&gLock);
 
        private_display->init_count--;
@@ -1121,6 +1124,14 @@ tdm_display_deinit(tdm_display *dpy)
        TDM_INFO("done");
 }
 
+INTERN int
+tdm_display_is_valide(tdm_display *dpy)
+{
+       if (dpy != NULL && dpy == g_private_display)
+               return 1;
+       return 0;
+}
+
 /* LCOV_EXCL_START */
 INTERN int
 tdm_display_check_module_abi(tdm_private_display *private_display, int abimaj, int abimin)
index 1f1caec..4b8ed34 100644 (file)
        tdm_private_display *private_display; \
        tdm_error ret = TDM_ERROR_NONE; /* default TDM_ERROR_NONE */\
        TDM_RETURN_VAL_IF_FAIL(dpy != NULL, TDM_ERROR_INVALID_PARAMETER); \
+       TDM_RETURN_VAL_IF_FAIL(tdm_display_is_valide(dpy), TDM_ERROR_INVALID_PARAMETER); \
        private_display = (tdm_private_display*)dpy;
 
 #define DISPLAY_FUNC_ENTRY_ERROR() \
        tdm_private_display *private_display; \
        tdm_error ret = TDM_ERROR_NONE; /* default TDM_ERROR_NONE */\
        TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(dpy != NULL, TDM_ERROR_INVALID_PARAMETER, NULL); \
+       TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(tdm_display_is_valide(dpy), TDM_ERROR_INVALID_PARAMETER, NULL); \
        private_display = (tdm_private_display*)dpy;
 
 EXTERN tdm_error
index 8c710a8..a3a5948 100644 (file)
@@ -448,6 +448,9 @@ typedef struct _tdm_capture_private_buffer {
 } tdm_capture_private_buffer;
 
 int
+tdm_display_is_valide(tdm_display *display);
+
+int
 tdm_display_check_module_abi(tdm_private_display *private_display, int abimaj, int abimin);
 
 tdm_private_output *
index 72b2525..4f5b4fe 100644 (file)
@@ -466,7 +466,7 @@ tdm_vblank_create(tdm_display *dpy, tdm_output *output, tdm_error *error)
        tdm_private_vblank *private_vblank;
        tdm_error ret;
 
-       TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(dpy != NULL, TDM_ERROR_INVALID_PARAMETER, NULL);
+       TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(tdm_display_is_valide(dpy), TDM_ERROR_INVALID_PARAMETER, NULL);
        TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(output != NULL, TDM_ERROR_INVALID_PARAMETER, NULL);
 
        if (error)