From d6456c6c58d5ecc51800bb88cfbbaee86bd6dab3 Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Fri, 8 Nov 2013 17:40:57 +0900 Subject: [PATCH] [edje_entry] Add null checking for name of anchor and item. Summary: Even if the anchor name is null, it will be appended to "anchors". There are many null checking for name of anchor. So it should be checked in geometry_get functions. Test Plan: Test with text "We can't find name in this case". This text makes break the application. Because of a space between "href" and "=". The name of anchor will be saved as null in "anchors". Reviewers: woohyun, tasn, cedric CC: cedric, raster Differential Revision: https://phab.enlightenment.org/D318 --- ChangeLog | 4 ++++ NEWS | 1 + src/lib/edje/edje_entry.c | 8 ++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ed9fe9d346..ec9d038b24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-11-05 Youngbok Shin + + * Edje: Add null checking for name of anchor and item in geometry get functions. + 2013-11-03 Christophe Sadoine * Eet: Added EET_DATA_DESCRIPTOR_ADD_MAPPING_BASIC(). diff --git a/NEWS b/NEWS index b7e0b8c1e2..e24caaacac 100644 --- a/NEWS +++ b/NEWS @@ -434,6 +434,7 @@ Fixes: - Fix size calculation of flags of signal callbacks - Check for both Lua 5.1 and 5.2. - Fixed memory leak in the edje map color transition. + - Add null checking for name of anchor and item in geometry get functions. * Efreet: - Fix desktop command parsing of https. diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c index 0f83fce548..9b7d95919d 100644 --- a/src/lib/edje/edje_entry.c +++ b/src/lib/edje/edje_entry.c @@ -2829,8 +2829,10 @@ _edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor) if (!en) return NULL; EINA_LIST_FOREACH(en->anchors, l, an) { + const char *n = an->name; if (an->item) continue; - if (!strcmp(anchor, an->name)) + if (!n) n = ""; + if (!strcmp(anchor, n)) return an->sel; } return NULL; @@ -2874,8 +2876,10 @@ _edje_entry_item_geometry_get(Edje_Real_Part *rp, const char *item, Evas_Coord * if (!en) return EINA_FALSE; EINA_LIST_FOREACH(en->anchors, l, an) { + const char *n = an->name; if (an->item) continue; - if (!strcmp(item, an->name)) + if (!n) n = ""; + if (!strcmp(item, n)) { evas_textblock_cursor_format_item_geometry_get(an->start, cx, cy, cw, ch); return EINA_TRUE;