zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3638b632c84421cdd37a9e2447be56aa4647728a

commit 3638b632c84421cdd37a9e2447be56aa4647728a
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Fri Oct 25 09:42:33 2019 -0400

    efl_ui/text_scroller: fix null derefs
    
    Summary: CIDs 1403890, 1396964, 1396945
    
    Reviewers: cedric, vtorri
    
    Reviewed By: cedric
    
    Subscribers: vtorri, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D10447
---
 src/lib/elementary/efl_ui_internal_text_scroller.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/efl_ui_internal_text_scroller.c 
b/src/lib/elementary/efl_ui_internal_text_scroller.c
index 8ee50a7075..b5888f5a60 100644
--- a/src/lib/elementary/efl_ui_internal_text_scroller.c
+++ b/src/lib/elementary/efl_ui_internal_text_scroller.c
@@ -21,6 +21,14 @@
 #define EFL_UI_SCROLLER_DATA_GET(o, sd) \
   Efl_Ui_Scroller_Data * sd = efl_data_scope_safe_get(o, EFL_UI_SCROLLER_CLASS)
 
+#define EFL_UI_SCROLLER_DATA_GET_OR_RETURN(o, ptr, ...) \
+  EFL_UI_SCROLLER_DATA_GET(o, ptr);                         \
+  if (EINA_UNLIKELY(!ptr))                            \
+    {                                                 \
+       ERR("No widget data for object %p (%s)",       \
+           o, evas_object_type_get(o));               \
+       return __VA_ARGS__;                                    \
+    }
 #define MY_CLASS EFL_UI_INTERNAL_TEXT_SCROLLER_CLASS
 #define MY_CLASS_PFX efl_ui_internal_text_scroller
 
@@ -55,7 +63,7 @@ _efl_ui_internal_text_scroller_efl_object_constructor(Eo *obj,
                                         Efl_Ui_Internal_Text_Scroller_Data *sd 
EINA_UNUSED)
 {
    obj = efl_constructor(efl_super(obj, MY_CLASS));
-   //EFL_UI_SCROLLER_DATA_GET(obj, psd);
+   //EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, psd, NULL);
    efl_ui_scrollbar_bar_mode_set(obj,
          EFL_UI_SCROLLBAR_MODE_OFF, EFL_UI_SCROLLBAR_MODE_OFF);
 
@@ -71,7 +79,7 @@ 
_efl_ui_internal_text_scroller_efl_canvas_group_group_calculate(Eo *obj,
    Evas_Coord vmw = 0, vmh = 0;
 
    efl_canvas_group_need_recalculate_set(obj, EINA_FALSE);
-   EFL_UI_SCROLLER_DATA_GET(obj, psd);
+   EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, psd);
 
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
@@ -162,7 +170,7 @@ _efl_ui_internal_text_scroller_scroller_mode_set(Eo *obj,
                                        Efl_Ui_Internal_Text_Scroller_Data *sd,
                                        Efl_Ui_Text_Scroller_Mode mode)
 {
-   EFL_UI_SCROLLER_DATA_GET(obj, psd);
+   EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, psd);
    sd->mode = mode;
    if (mode == EFL_UI_TEXT_SCROLLER_MODE_MULTILINE)
      {
@@ -180,7 +188,7 @@ EOLIAN static Eo *
 _efl_ui_internal_text_scroller_viewport_clip_get(const Eo *obj,
       Efl_Ui_Internal_Text_Scroller_Data *sd EINA_UNUSED)
 {
-   EFL_UI_SCROLLER_DATA_GET(obj, psd);
+   EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, psd, NULL);
    return evas_object_clip_get(psd->pan_obj);
 }
 

-- 


Reply via email to