From: Enlightenment S. <no-...@en...> - 2011-11-11 18:11:18
|
Log: Sandbox the edje file setting. Patch up the argument getting for image setting. Still not sandboxing the image setting, that's a pain. Author: onefang Date: 2011-11-11 10:11:10 -0800 (Fri, 11 Nov 2011) New Revision: 65072 Trac: http://trac.enlightenment.org/e/changeset/65072 Modified: trunk/edje/src/lib/edje_lua2.c Modified: trunk/edje/src/lib/edje_lua2.c =================================================================== --- trunk/edje/src/lib/edje_lua2.c 2011-11-11 16:47:05 UTC (rev 65071) +++ trunk/edje/src/lib/edje_lua2.c 2011-11-11 18:11:10 UTC (rev 65072) @@ -2285,14 +2285,25 @@ { Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; - char *file = NULL, *key = NULL; + const char *file = NULL, *key = NULL; + int n; if (!obj) return 0; if (obj->meta != _elua_meta_evas) return 0; - if (_elua_2_str_get(L, 2, EINA_TRUE, "file", &file, "key", &key) > 0) + n = lua_gettop(L); + + if (3 == n) + n = _elua_2_str_get(L, 2, EINA_TRUE, "file", &file, "key", &key); + else if (2 == n) { - // FIXME: ONLY allow access to the images in the current edje file. + file = obj->ed->file->path; + key = lua_tostring(L, 2); + } + + if (1 < n) + { + // FIXME: Sandbox lua - Only allow access to images within the same file. evas_object_image_file_set(elo->evas_obj, file, key); } evas_object_image_file_get(elo->evas_obj, (const char **) &file, (const char **) &key); @@ -2352,10 +2363,11 @@ if (!obj) return 0; if (obj->meta != _elua_meta_evas) return 0; - // FIXME: Only allow groups from the same file this edje came from. if (_elua_2_str_get(L, 2, EINA_TRUE, "file", &file, "group", &group) > 0) { - edje_object_file_set(elo->evas_obj, file, group); + // Sandbox lua - Only allow access to groups within the same file. + // By the simple expedient of completely ignoring what file was requested. + edje_object_file_set(elo->evas_obj, obj->ed->file->path, group); } edje_object_file_get(elo->evas_obj, (const char **) &file, (const char **) &group); _elua_str_ret(L, "file", file); |