From: Hosang Kim Date: Wed, 17 Jun 2015 13:02:48 +0000 (+0200) Subject: dayselector : add safety check for NULL pointer from _item_find() X-Git-Tag: v1.15.0-alpha1~170 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dbe8ca699a3ac55518d490f2aaad926cc5c86436;p=platform%2Fupstream%2Felementary.git 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 --- 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)); }