cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=dbe8ca699a3ac55518d490f2aaad926cc5c86436
commit dbe8ca699a3ac55518d490f2aaad926cc5c86436 Author: Hosang Kim <hosang12....@samsung.com> Date: Wed Jun 17 15:02:48 2015 +0200 dayselector : add safety check for NULL pointer from _item_find() Summary: It could make crash when _item_find() is failed. CID - 404129 CID - 402467 CID - 398714 CID - 390012 @fix Reviewers: raster, thiepha, woohyun, Hermet Differential Revision: https://phab.enlightenment.org/D2683 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/elm_dayselector.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lib/elm_dayselector.c b/src/lib/elm_dayselector.c index 1dbbd75..1c7e3b1 100644 --- a/src/lib/elm_dayselector.c +++ b/src/lib/elm_dayselector.c @@ -224,8 +224,9 @@ _elm_dayselector_elm_container_content_set(Eo *obj, Elm_Dayselector_Data *sd, co int day; char buf[1024]; Elm_Dayselector_Item_Data *it = NULL; + const char *type = elm_object_widget_type_get(content); - if (strcmp(elm_object_widget_type_get(content), "Elm_Check")) + if (type && strcmp(type, "Elm_Check")) return EINA_FALSE; if (!item) return EINA_FALSE; @@ -469,13 +470,25 @@ _elm_dayselector_eo_base_constructor(Eo *obj, Elm_Dayselector_Data *_pd EINA_UNU EOLIAN static void _elm_dayselector_day_selected_set(Eo *obj, Elm_Dayselector_Data *_pd EINA_UNUSED, Elm_Dayselector_Day day, Eina_Bool selected) { - elm_check_state_set(VIEW(_item_find(obj, day)), selected); + Elm_Dayselector_Item_Data *it = _item_find(obj, day); + if (!it) + { + ERR("Failed to find item"); + return; + } + elm_check_state_set(VIEW(it), selected); } EOLIAN static Eina_Bool _elm_dayselector_day_selected_get(Eo *obj, Elm_Dayselector_Data *_pd EINA_UNUSED, Elm_Dayselector_Day day) { - return elm_check_state_get(VIEW(_item_find(obj, day))); + Elm_Dayselector_Item_Data *it = _item_find(obj, day); + if (!it) + { + ERR("Failed to find item"); + return EINA_FALSE; + } + return elm_check_state_get(VIEW(it)); } EOLIAN static void @@ -555,6 +568,7 @@ _elm_dayselector_weekdays_names_set(Eo *obj, Elm_Dayselector_Data *sd, const cha for (idx = 0; idx < ELM_DAYSELECTOR_MAX; idx++) { it = _item_find(obj, idx); + if (!it) continue; if (sd->weekdays_names_set) elm_object_text_set(VIEW(it), weekdays[idx]); @@ -578,6 +592,8 @@ _elm_dayselector_weekdays_names_get(Eo *obj, Elm_Dayselector_Data *sd EINA_UNUSE for (idx = 0; idx < ELM_DAYSELECTOR_MAX; idx++) { it = _item_find(obj, idx); + if (!it) continue ; + weekday = elm_object_text_get(VIEW(it)); weekdays = eina_list_append(weekdays, eina_stringshare_add(weekday)); } --