[M108 Migration] Add error handling and ptr validation check 93/288293/3
authorBakka Uday Kiran <b.kiran@samsung.com>
Tue, 14 Feb 2023 16:59:40 +0000 (22:29 +0530)
committerBot Blink <blinkbot@samsung.com>
Wed, 15 Feb 2023 22:30:51 +0000 (22:30 +0000)
Add abnormal error handling while allocating memory.
Add ptr validation check after calling mem alloc.

Reference: https://review.tizen.org/gerrit/c/281174

Change-Id: If1beab4851e500db797d7b50a4344cbc6672a34d
Signed-off-by: Bakka Uday Kiran <b.kiran@samsung.com>
tizen_src/ewk/efl_integration/eweb_view.cc
tizen_src/ewk/efl_integration/private/ewk_view_private.cc

index 81d92fe..3788a5d 100644 (file)
@@ -2233,7 +2233,13 @@ void EWebView::GetSessionData(const char** data, unsigned* length) const {
     serializedEntry.WriteToPickle(MAX_SESSION_ENTRY_SIZE, &sessionPickle);
   }
 
-  *data = static_cast<char*>(malloc(sizeof(char) * sessionPickle.size()));
+  if (sessionPickle.size() <= 0 ||
+      !(*data =
+            static_cast<char*>(malloc(sizeof(char) * sessionPickle.size())))) {
+    LOG(ERROR) << "Failed to get session data";
+    *length = 0;
+    return;
+  }
   memcpy(const_cast<char*>(*data), sessionPickle.data(), sessionPickle.size());
   *length = sessionPickle.size();
 }
index 87f2db6..febd993 100644 (file)
@@ -58,19 +58,25 @@ void handleEvasObjectAdd(Evas_Object* evas_object)
   const Ewk_View_Smart_Class* api = reinterpret_cast<const Ewk_View_Smart_Class*>(smart_class);
   assert(api);
 
-  Ewk_View_Smart_Data* d = GetEwkViewSmartDataFromEvasObject(evas_object);
+  Ewk_View_Smart_Data* smart_data =
+      GetEwkViewSmartDataFromEvasObject(evas_object);
 
-  if (!d) {
+  if (!smart_data) {
     // Allocating with 'calloc' as the API contract is that it should be deleted with 'free()'.
-    d = static_cast<Ewk_View_Smart_Data*>(calloc(1, sizeof(Ewk_View_Smart_Data)));
-    evas_object_smart_data_set(evas_object, d);
+    smart_data = static_cast<Ewk_View_Smart_Data*>(
+        calloc(1, sizeof(Ewk_View_Smart_Data)));
+    if (!smart_data) {
+      EINA_LOG_ERR("Failed to allocate Smart View Data");
+      return;
+    }
+    evas_object_smart_data_set(evas_object, smart_data);
   }
-  d->self = evas_object;
-  d->api = api;
+  smart_data->self = evas_object;
+  smart_data->api = api;
 
   parent_smart_class_.add(evas_object);
 
-  d->priv = 0; // Will be initialized later.
+  smart_data->priv = 0;  // Will be initialized later.
 }
 
 // Ewk_View_Smart_Class callback interface: