1. Fixed double free in OCDoResource that caused segfault
authorDoug Hudson <douglas.hudson@intel.com>
Fri, 22 Aug 2014 00:44:13 +0000 (20:44 -0400)
committerDoug Hudson <douglas.hudson@intel.com>
Fri, 22 Aug 2014 00:44:22 +0000 (20:44 -0400)
2. Modified csdk/stack/test/stacktests.cpp because API change caused
ocstack unit test build to fail.

Change-Id: Ie06a5ad603e40ea67fbaadead66b4334d290c8ac

csdk/stack/src/ocstack.c
csdk/stack/test/README
csdk/stack/test/stacktests.cpp

index 3c1ef97..4b23d91 100644 (file)
@@ -319,6 +319,7 @@ OCStackResult OCDoResource(OCDoHandle *handle, OCMethod method, const char *requ
     if(!*handle)
     {
         result = OC_STACK_NO_MEMORY;
+        OCFree(*handle);
         goto exit;
     }
 
@@ -326,6 +327,8 @@ OCStackResult OCDoResource(OCDoHandle *handle, OCMethod method, const char *requ
     if (!token)
     {
         result = OC_STACK_NO_MEMORY;
+        OCFree(*handle);
+        OCFree(token);
         goto exit;
     }
     if((result = AddClientCB(&clientCB, cbData, token, *handle, method)) != OC_STACK_OK)
@@ -342,8 +345,6 @@ exit:
     {
         OC_LOG(ERROR, TAG, PCF("OCDoResource error"));
         FindAndDeleteClientCB(clientCB);
-        OCFree(token);
-        OCFree(*handle);
     }
     return result;
 }
index f2426c1..c16e3b7 100644 (file)
@@ -25,12 +25,15 @@ Unit Test Requirements:
    At the time of this writing this was done by running
    
    root/csdk/make deepclean
-   root/csdk/make
+   root/csdk/make BUILD=release    *default
+   root/csdk/make BUILD=debug
 
-5. Next, run
+5. Next, build the ocstack
    root/csdk/stack/test/make clean
-   root/csdk/stack/test/make
+   root/csdk/stack/test/make BUILD=release    *default
+   root/csdk/stack/test/make BUILD=debug
 
-6. Run the test by
-   root/csdk/stack/test/stacktests
+6. Run the unit test by
+   root/csdk/stack/test/release/stacktests
+   root/csdk/stack/test/debug/stacktests
 
index c555ec3..c203d80 100644 (file)
@@ -978,10 +978,10 @@ TEST(StackTest, BindEntityHandlerBad) {
 }
 
 
-OCStackResult entityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest) {
+OCEntityHandlerResult entityHandler(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest) {
     OC_LOG(INFO, TAG, "Entering entityHandler");
 
-    return OC_STACK_OK;
+    return OC_EH_OK;
 }
 
 TEST(StackTest, BindEntityHandlerGood) {