summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-06-09 13:14:57 +0200
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2019-06-09 13:21:45 +0200
commit2ae6055d808efd365a4beb8690525f3715fd82d3 (patch)
treec03aa5626674eed263dc5a4436ae32398e031077
parente8e637a79a6cfb2bfec53e9afccde1f216220571 (diff)
edje_cc: protect array lookup
it seems with those two actions here in the commit, do use id in a different way the other actions do. This is commit protects against this. Differential Revision: https://phab.enlightenment.org/D9078
-rw-r--r--src/bin/edje/edje_cc_out.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c
index 592b592736..2b5f700e3e 100644
--- a/src/bin/edje/edje_cc_out.c
+++ b/src/bin/edje/edje_cc_out.c
@@ -734,6 +734,14 @@ check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef)
734 { 734 {
735 Edje_Part *part; 735 Edje_Part *part;
736 736
737 /*
738 * we are accessing part with an id,
739 * if actions is ACTION_STOP or ACTION_TYPE_SCRIPT, then id is from the parts array.
740 * In order to not crash here, we should continue here.
741 */
742 if (ep->action != EDJE_ACTION_TYPE_ACTION_STOP || ep->action != EDJE_ACTION_TYPE_SCRIPT)
743 continue;
744
737 if (et->id >= (int) pc->parts_count) 745 if (et->id >= (int) pc->parts_count)
738 { 746 {
739 ERR("Target id '%d' greater than possible index '%d'.", et->id, (int) pc->parts_count - 1); 747 ERR("Target id '%d' greater than possible index '%d'.", et->id, (int) pc->parts_count - 1);