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 <cedric@osg.samsung.com>
This commit is contained in:
Hosang Kim 2015-06-17 15:02:48 +02:00 committed by Cedric BAIL
parent b592c6df35
commit 2e123305b4
1 changed files with 19 additions and 3 deletions

View File

@ -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));
}