From 1733b09e1b33b8a25dfee3731e8097db3b97b136 Mon Sep 17 00:00:00 2001 From: Minkyoung Kim Date: Wed, 13 Jul 2016 21:00:07 +0900 Subject: [PATCH] ecore_evas_extn: Check whether server_data sender is client's server. Summary: Sometimes, In ipc_server_data, extn->ipc.server's data is different with e->server's data. The case is as follows. Process'A' has a server. Process'B' has 'A's client(ee address : 0xB0). Process'B's client die, and 'B's server created. and server's ee address is same with destroyed client's ee(0xB0). At the same time, 'A's server send the message to 'B's client. but 'B's client is died! so _ipc_server_data would manipulate 'B's server data. Test Plan: Tizen Mobile Text. Reviewers: raster, spacegrapher, jpeg, wonsik, dkdk Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D4158 --- src/modules/ecore_evas/engines/extn/ecore_evas_extn.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c index 06f1ca8800..d705df3ee1 100644 --- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c +++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c @@ -986,6 +986,8 @@ _ipc_server_data(void *data, int type EINA_UNUSED, void *event) if (!extn) return ECORE_CALLBACK_PASS_ON; if (e->major != MAJOR) return ECORE_CALLBACK_PASS_ON; + if (ee != ecore_ipc_server_data_get(extn->ipc.server)) + return ECORE_CALLBACK_PASS_ON; switch (e->minor) { case OP_UPDATE: