[IOT-2087] Check NULL pointer after realloc
authorol.beketov <ol.beketov@samsung.com>
Sun, 21 May 2017 09:37:48 +0000 (12:37 +0300)
committerDmitriy Zhuravlev <d.zhuravlev@samsung.com>
Sun, 21 May 2017 11:25:59 +0000 (11:25 +0000)
Change-Id: Ia9eac5375ea4d322cbe4f685588a57b6af047deb
Signed-off-by: ol.beketov <ol.beketov@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/19621
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Oleksandr Dmytrenko <o.dmytrenko@samsung.com>
Reviewed-by: Dmitriy Zhuravlev <d.zhuravlev@samsung.com>
bridging/plugins/hue_plugin/hue_resource.cpp

index 657d6a9..af7e823 100644 (file)
@@ -259,12 +259,24 @@ void addAuthorizedBridgeCB(const char *macAddress, const char *ClientId)
     {
         uint32_t prefix_size = MAX_QUERY_STRING;
         char *prefix = (char *) OICMalloc(prefix_size);
+        if (NULL == prefix)
+        {
+            OIC_LOG_V(INFO, TAG, " Failed to malloc prefix");
+            return;
+        }
 
         /*get prefix for discovering lights*/
         result = hueAuthGetHttpPrefix(prefix, &prefix_size, macAddress, ClientId);
         if (result == MPM_RESULT_INSUFFICIENT_BUFFER)
         {
-            prefix = (char *) realloc(prefix, prefix_size);
+            char *tmp = (char *) OICRealloc(prefix, prefix_size);
+            if (NULL == tmp)
+            {
+                OIC_LOG_V(INFO, TAG, " Failed to realloc prefix");
+                OICFree(prefix);
+                return;
+            }
+            prefix = tmp;
             result = hueAuthGetHttpPrefix(prefix, &prefix_size, macAddress, ClientId);
         }
         if (result == MPM_RESULT_OK)
@@ -570,11 +582,23 @@ MPMResult pluginReconnect(MPMPluginCtx *, MPMPipeMessage *message)
             }
             uint32_t prefix_size = MAX_QUERY_STRING;
             char *prefix = (char *) OICMalloc(prefix_size);
+            if (NULL == prefix)
+            {
+                OIC_LOG_V(INFO, TAG, " Failed to malloc prefix");
+                return MPM_RESULT_INTERNAL_ERROR;
+            }
             result = hueAuthGetHttpPrefix(prefix, &prefix_size, plugindetails->bridgeMac,
                                           plugindetails->clientId);
             if (result == MPM_RESULT_INSUFFICIENT_BUFFER)
             {
-                prefix = (char *) realloc(prefix, prefix_size);
+                char *tmp = (char *) OICRealloc(prefix, prefix_size);
+                if (NULL == tmp)
+                {
+                    OIC_LOG(DEBUG, TAG, "Failed to realloc prefix");
+                    OICFree(prefix);
+                    return MPM_RESULT_INTERNAL_ERROR;
+                }
+                prefix = tmp;
                 result = hueAuthGetHttpPrefix(prefix, &prefix_size, plugindetails->bridgeMac,
                                               plugindetails->clientId);
             }