efl_ui_collection: protect against invalid access
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Sat, 21 Sep 2019 09:08:46 +0000 (11:08 +0200)
committerJongmin Lee <jm105.lee@samsung.com>
Sun, 22 Sep 2019 21:11:58 +0000 (06:11 +0900)
i am not sure why this should ever happen. However, a error here is
better than a access out of the bounds of the array.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D10066

src/lib/elementary/efl_ui_collection.c

index 718f5b1..82e21d3 100644 (file)
@@ -1152,8 +1152,9 @@ _efl_ui_collection_efl_ui_single_selectable_fallback_selection_get(const Eo *obj
 #define ITEM_IS_OUTSIDE_VISIBLE(id) id < collection_pd->start_id || id > collection_pd->end_id
 
 static inline void
-_assert_item_available(Eo *item, int new_id, Efl_Ui_Collection_Data *pd)
+_assert_item_available(Eo *item, unsigned int new_id, Efl_Ui_Collection_Data *pd)
 {
+   EINA_SAFETY_ON_FALSE_RETURN(new_id < eina_list_count(pd->items));
    efl_gfx_entity_visible_set(item, EINA_TRUE);
    efl_gfx_entity_geometry_set(item, efl_ui_position_manager_entity_position_single_item(pd->pos_man, new_id));
 }