Crash in OCProcessPresence (#298) 89/182889/1
authorkush.agrawal@samsung.com <kush.agrawal@samsung.com>
Fri, 22 Jun 2018 14:00:08 +0000 (23:00 +0900)
committerAmit KS <amit.s12@samsung.com>
Thu, 28 Jun 2018 10:39:13 +0000 (16:09 +0530)
* [CONPRO-1285]Crash in OCProcessPresence

There is a issue after freeing the clientcb
we are again accessing it.It can possibly crash.

So, to avoid this scenario we are using LL_FOREACH_SAFE
to iterate the list

Signed-off-by: agrkush <kush.agrawal@samsung.com>
* Update ocstack.c

https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/pull/298
(cherry picked from commit 578c6918d40d5bded028266ceb3a4aaf68d33623)

Change-Id: Id514a242e34d7a20df2845c09a757b3d26c9604a
Signed-off-by: Amit KS <amit.s12@samsung.com>
resource/csdk/stack/src/ocstack.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 60e8e29..f469c51
@@ -3338,10 +3338,11 @@ OCStackResult OCProcessPresence()
     // to most purposes.  Uncomment as needed.
     //OIC_LOG(INFO, TAG, "Entering RequestPresence");
     ClientCB* cbNode = NULL;
+    ClientCB* tempcbNode = NULL;
     OCClientResponse clientResponse;
     OCStackApplicationResult cbResult = OC_STACK_DELETE_TRANSACTION;
 
-    LL_FOREACH(cbList, cbNode)
+    LL_FOREACH_SAFE(cbList, cbNode, tempcbNode)
     {
         if (OC_REST_PRESENCE != cbNode->method || !cbNode->presence)
         {