[IOT-1659] Fix JNI static analysis issue for Notification Service
authornikhil.a <nikhil.a7@samsung.com>
Fri, 9 Dec 2016 11:41:55 +0000 (17:11 +0530)
committerUze Choi <uzchoi@samsung.com>
Mon, 12 Dec 2016 08:40:28 +0000 (08:40 +0000)
It is required to fix static analysis issue and improve code quality

Change-Id: Ic5afa823196ef83fb2ee62bb799dda093c13485b
Signed-off-by: nikhil.a <nikhil.a7@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/15351
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: JungYong KIM <jyong2.kim@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/notification/android/notification-service/src/main/jni/consumer/JniNotificationConsumer.cpp
service/notification/android/notification-service/src/main/jni/provider/JniNotificationProvider.cpp

index ad4a123..58a93a1 100755 (executable)
@@ -63,6 +63,7 @@ static JNIEnv *GetJNIEnv(jint *ret)
             }\r
         case JNI_EVERSION:\r
             LOGE ("JNI version is not supported");\r
+            return NULL;\r
         default:\r
             LOGE ("Failed to get the environment");\r
             return NULL;\r
@@ -267,7 +268,7 @@ const char *getNativeTopicName(JNIEnv *env,  jobject jTopic)
         return nullptr;\r
     }\r
     jstring jTopicName = (jstring) env->GetObjectField( jTopic, fid_name);\r
-    const char *topicName;\r
+    const char *topicName = NULL;\r
     if (jTopicName)\r
     {\r
         topicName = env->GetStringUTFChars( jTopicName, NULL);\r
@@ -329,18 +330,21 @@ OIC::Service::NSTopicsList *getNativeTopicsList(JNIEnv *env, jobject jTopicList)
         if (topicObj == NULL)\r
         {\r
             LOGE("Error: object of field  Topic  is null");\r
+            delete nsTopicList;\r
             return nullptr;\r
         }\r
         const char *name =  getNativeTopicName(env, topicObj);\r
         if (name == nullptr)\r
         {\r
             LOGE("Error: Couldn't find topic Name");\r
+            delete nsTopicList;\r
             return nullptr;\r
         }\r
         std::string topicName(name);\r
-        OIC::Service::NSTopic::NSTopicState state;\r
+        OIC::Service::NSTopic::NSTopicState state = OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED;\r
         if (!getNativeTopicState(env, topicObj, state))\r
         {\r
+            delete nsTopicList;\r
             return nullptr;\r
         }\r
         nsTopicList->addTopic(topicName, state);\r
@@ -635,15 +639,21 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
 {\r
     LOGD ("ConsumerService_onDiscoverProvider - IN");\r
 \r
-    jint envRet;\r
+    jint envRet = 0;;\r
     JNIEnv *env = GetJNIEnv(&envRet);\r
-    if (NULL == env) return ;\r
+    if (NULL == env)\r
+    {\r
+        return ;\r
+    }\r
 \r
     jobject jDiscoverListener = (jobject) env->NewLocalRef(g_obj_discoverListener);\r
     if (!jDiscoverListener)\r
     {\r
         LOGE ("Failed to Get jDiscoverListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -651,7 +661,10 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
     if (!obj_provider)\r
     {\r
         LOGE ("Failed to Get Provider Object");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -659,7 +672,10 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jDiscoverListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -669,14 +685,20 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onProviderDiscovered");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
     env->CallVoidMethod(jDiscoverListener, mid, obj_provider);\r
 \r
     env->DeleteLocalRef(jDiscoverListener);\r
-    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet)\r
+    {\r
+        g_jvm_consumer->DetachCurrentThread();\r
+    }\r
     LOGD ("ConsumerService_onDiscoverProvider - OUT");\r
     return ;\r
 }\r
@@ -685,22 +707,31 @@ void onProviderState( OIC::Service::NSProviderState state)
 {\r
     LOGD ("ConsumerService_onProviderState -IN");\r
 \r
-    jint envRet;\r
+    jint envRet = 0;;\r
     JNIEnv *env = GetJNIEnv(&envRet);\r
-    if (NULL == env) return ;\r
+    if (NULL == env)\r
+    {\r
+        return ;\r
+    }\r
 \r
     jobject jAcceptListener = (jobject) env->NewLocalRef(g_obj_acceptListener);\r
     if (!jAcceptListener)\r
     {\r
         LOGE ("Failed to Get jAcceptListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jobject obj_state = getJavaProviderState(env, state);\r
     if (!obj_state)\r
     {\r
         LOGE ("Failed to Get ProviderState Object");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -708,7 +739,10 @@ void onProviderState( OIC::Service::NSProviderState state)
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jAcceptListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -718,13 +752,19 @@ void onProviderState( OIC::Service::NSProviderState state)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onProviderState");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     env->CallVoidMethod(jAcceptListener, mid, obj_state);\r
 \r
     env->DeleteLocalRef(jAcceptListener);\r
-    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet)\r
+    {\r
+        g_jvm_consumer->DetachCurrentThread();\r
+    }\r
     LOGD ("ConsumerService_onProviderState -OUT");\r
     return ;\r
 \r
@@ -734,15 +774,21 @@ void onMessagePosted(OIC::Service::NSMessage *message)
 {\r
     LOGD ("ConsumerService_onMessagePosted -IN");\r
 \r
-    jint envRet;\r
+    jint envRet=0;;\r
     JNIEnv *env = GetJNIEnv(&envRet);\r
-    if (NULL == env) return ;\r
+    if (NULL == env)\r
+    {\r
+        return ;\r
+    }\r
 \r
     jobject jPostListener = (jobject) env->NewLocalRef(g_obj_postListener);\r
     if (!jPostListener)\r
     {\r
         LOGE ("Failed to Get jPostListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -750,14 +796,20 @@ void onMessagePosted(OIC::Service::NSMessage *message)
     if (!obj_message)\r
     {\r
         LOGE ("Failed to Get Message Object");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jclass cls = env->GetObjectClass(jPostListener);\r
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jPostListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -767,14 +819,20 @@ void onMessagePosted(OIC::Service::NSMessage *message)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onMessageReceived");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
     env->CallVoidMethod(jPostListener, mid, obj_message);\r
 \r
     env->DeleteLocalRef(jPostListener);\r
-    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet)\r
+    {\r
+        g_jvm_consumer->DetachCurrentThread();\r
+    }\r
     LOGD ("ConsumerService_onMessagePosted -OUT");\r
     return ;\r
 }\r
@@ -783,15 +841,21 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
 {\r
     LOGD ("ConsumerService_onSyncInfoReceived - IN");\r
 \r
-    jint envRet;\r
+    jint envRet=0;;\r
     JNIEnv *env = GetJNIEnv(&envRet);\r
-    if (NULL == env) return ;\r
+    if (NULL == env)\r
+    {\r
+        return ;\r
+    }\r
 \r
     jobject jSyncListener = (jobject) env->NewLocalRef(g_obj_syncListener);\r
     if (!jSyncListener)\r
     {\r
         LOGE ("Failed to Get jSyncListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -805,14 +869,20 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!syncType)\r
     {\r
         LOGE ("Failed to Get syncType for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jclass cls_SyncInfo = (jclass) (env->NewLocalRef(g_cls_SyncInfo));\r
     if (!cls_SyncInfo)\r
     {\r
         LOGE ("Failed to Get ObjectClass for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jmethodID mid_syncInfo = env->GetMethodID(\r
@@ -822,7 +892,10 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!mid_syncInfo)\r
     {\r
         LOGE ("Failed to Get MethodID for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -831,7 +904,10 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!obj_syncInfo)\r
     {\r
         LOGE ("Failed to Get Object for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -839,7 +915,10 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jSyncListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -849,7 +928,10 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onSyncInfoReceived");\r
-        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet)\r
+        {\r
+            g_jvm_consumer->DetachCurrentThread();\r
+        }\r
         return ;\r
     }\r
 \r
@@ -857,7 +939,10 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
 \r
     env->DeleteLocalRef(jSyncListener);\r
     env->DeleteLocalRef(cls_SyncInfo);\r
-    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet)\r
+    {\r
+        g_jvm_consumer->DetachCurrentThread();\r
+    }\r
     LOGD ("ConsumerService_onSyncInfoReceived - OUT");\r
     return ;\r
 }\r
@@ -1114,7 +1199,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeG
         return NULL;\r
     }\r
     jlong jProvider = env->GetLongField(jObj, nativeHandle);\r
-    OIC::Service::NSTopicsList *topicList;\r
+    OIC::Service::NSTopicsList *topicList = nullptr;\r
     if (jProvider)\r
     {\r
         LOGD ("calling subscribe on mNativeHandle");\r
@@ -1175,7 +1260,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeUpda
         return  (jint) OIC::Service::NSResult::ERROR;\r
     }\r
     jlong jProvider = env->GetLongField(jObj, nativeHandle);\r
-    OIC::Service::NSResult result;\r
+    OIC::Service::NSResult result = OIC::Service::NSResult::FAIL;\r
     if (jProvider)\r
     {\r
         LOGD ("calling subscribe on mNativeHandle");\r
@@ -1219,7 +1304,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeG
         return NULL;\r
     }\r
     jlong jProvider = env->GetLongField(jObj, nativeHandle);\r
-    OIC::Service::NSProviderState state;\r
+    OIC::Service::NSProviderState state = OIC::Service::NSProviderState::DENY;\r
     if (jProvider)\r
     {\r
         LOGD ("calling getProviderState on mNativeHandle");\r
@@ -1286,7 +1371,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
     LOGD("ConsumerService_JNI_OnLoad");\r
     g_jvm_consumer = jvm;\r
 \r
-    JNIEnv *env;\r
+    JNIEnv *env = NULL;\r
     if (jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION) != JNI_OK)\r
     {\r
         LOGE("Failed to get the environment using GetEnv()");\r
@@ -1470,7 +1555,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
 JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *reserved)\r
 {\r
     LOGI("ConsumerService_JNI_OnUnload");\r
-    JNIEnv *env;\r
+    JNIEnv *env = NULL;\r
 \r
     if (jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION) != JNI_OK)\r
     {\r
index 3e96fe5..b06fed3 100755 (executable)
@@ -60,6 +60,7 @@ static JNIEnv *GetJNIEnv(jint *ret)
             }
         case JNI_EVERSION:
             LOGE ("JNI version is not supported");
+            return NULL;
         default:
             LOGE ("Failed to get the environment");
             return NULL;
@@ -127,7 +128,7 @@ OIC::Service::NSMessage *getNativeMessage(JNIEnv *env, jobject jMsg)
 
     jlong jttl = (jlong) env->GetLongField( jMsg, fid_ttl);
     uint64_t  ttl = jttl;
-    LOGD("TTL: %d\n", ttl);
+    LOGD("TTL: %lld\n", ttl);
 
     // Message Title
     jfieldID fid_title = env->GetFieldID( cls, "mTitle", "Ljava/lang/String;");
@@ -276,7 +277,7 @@ OIC::Service::NSMessage *getNativeMessage(JNIEnv *env, jobject jMsg)
         }
     }
 
-    OIC::Service::NSMessage *nsMsg;
+    OIC::Service::NSMessage *nsMsg = nullptr;
     jfieldID nativeHandle = env->GetFieldID(cls, "mNativeHandle", "J");
     if (!nativeHandle)
     {
@@ -657,15 +658,21 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
 {
     LOGD("JNIProviderService_onSubscribeListenerCb - IN");
 
-    jint envRet;
+    jint envRet = 0;;
     JNIEnv *env = GetJNIEnv(&envRet);
-    if (NULL == env) return ;
+    if (NULL == env)
+    {
+        return ;
+    }
 
     jobject jSubscriptionListener = (jobject) env->NewLocalRef(g_obj_subscriptionListener);
     if (!jSubscriptionListener)
     {
         LOGE ("Failed to Get jSubscriptionListener");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
 
@@ -677,7 +684,10 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!cls_consumer)
     {
         LOGE ("Failed to Get ObjectClass for Consumer");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
 
@@ -688,7 +698,10 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!mid_consumer)
     {
         LOGE ("Failed to Get MethodID for Consumer<init>");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
     jobject obj_consumer = env->NewObject( cls_consumer, mid_consumer, jConsumerId);
@@ -697,7 +710,10 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!cls)
     {
         LOGE("Failed to Get ObjectClass of jSubscriptionListener");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return;
     }
     jmethodID mid = env->GetMethodID(
@@ -707,14 +723,20 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!mid)
     {
         LOGE("Failed to Get MethodID of onConsumerSubscribed");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return;
     }
 
     env->CallVoidMethod( jSubscriptionListener, mid, obj_consumer);
     env->DeleteLocalRef(jSubscriptionListener);
     env->DeleteLocalRef(cls_consumer);
-    if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+    if (JNI_EDETACHED == envRet)
+    {
+        g_jvm_provider->DetachCurrentThread();
+    }
     LOGD("JNIProviderService_onSubscribeListenerCb - OUT");
     return;
 }
@@ -723,15 +745,21 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
 {
     LOGD("JNIProviderService_onSyncInfoListenerCb - IN");
 
-    jint envRet;
+    jint envRet = 0;;
     JNIEnv *env = GetJNIEnv(&envRet);
-    if (NULL == env) return ;
+    if(NULL == env)
+    {
+        return ;
+    }
 
     jobject jSyncListener = (jobject) env->NewLocalRef(g_obj_syncListener);
     if (!jSyncListener)
     {
         LOGE ("Failed to Get jSyncListener");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
 
@@ -744,14 +772,20 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!syncType)
     {
         LOGE ("Failed to Get syncType for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
     jclass cls_SyncInfo = (jclass) (env->NewLocalRef(g_cls_SyncInfo));
     if (!cls_SyncInfo)
     {
         LOGE ("Failed to Get ObjectClass for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
     jmethodID mid_syncInfo = env->GetMethodID(
@@ -761,7 +795,10 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!mid_syncInfo)
     {
         LOGE ("Failed to Get MethodID for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
 
@@ -770,7 +807,10 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!obj_syncInfo)
     {
         LOGE ("Failed to Get Object for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
         return ;
     }
 
@@ -778,8 +818,11 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!cls)
     {
         LOGE("Failed to Get ObjectClass");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
-        return;
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
+        return ;
     }
     jmethodID mid = env->GetMethodID(
                         cls,
@@ -788,15 +831,20 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!mid)
     {
         LOGE("Failed to Get MethodID");
-        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
-        return;
+        if (JNI_EDETACHED == envRet)
+        {
+            g_jvm_provider->DetachCurrentThread();
+        }
+        return ;
     }
     env->CallVoidMethod( jSyncListener, mid, obj_syncInfo);
 
     env->DeleteLocalRef(jSyncListener);
     env->DeleteLocalRef(cls_SyncInfo);
-    if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
-
+    if (JNI_EDETACHED == envRet)
+    {
+        g_jvm_provider->DetachCurrentThread();
+    }
     LOGD("JNIProviderService: OnSyncInfoListenerCb - OUT");
     return;
 
@@ -1037,6 +1085,7 @@ Java_org_iotivity_service_ns_provider_ProviderService_nativeGetRegisteredTopicLi
     }
 
     jobject obj_topicList = getJavaTopicsList(env, topicList);
+    delete topicList;
 
     LOGD("JNIProviderService: nativeGetRegisteredTopicList - OUT");
     return obj_topicList;
@@ -1058,7 +1107,9 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeAcce
     OIC::Service::NSConsumer *consumer =
         OIC::Service::NSProviderService::getInstance()->getConsumer(consumerId);
     if (consumer)
+    {
         return (jint) consumer->acceptSubscription((bool)jAccepted);
+    }
 
     LOGE("Couldn't find consumer");
     LOGD("JNIProviderService: nativeAcceptSubscription - OUT");
@@ -1153,6 +1204,8 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeG
         return NULL;
     }
     jobject obj_topicList = getJavaTopicsList(env, topicList);
+    delete topicList;
+
     LOGD("JNIProviderService: nativeGetConsumerTopicList - OUT");
     return obj_topicList;
 }
@@ -1163,7 +1216,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
     LOGD("ProviderService_JNI_OnLoad");
     g_jvm_provider = jvm;
 
-    JNIEnv *env;
+    JNIEnv *env = NULL;
     if (jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION) != JNI_OK)
     {
         LOGE("Failed to get the environment using GetEnv()");
@@ -1334,7 +1387,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
 JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *reserved)
 {
     LOGD("ProviderService_JNI_OnUnload");
-    JNIEnv *env;
+    JNIEnv *env = NULL;
 
     if (jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION) != JNI_OK)
     {