Fix bundle_add_byte_array function 36/271136/2
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 16 Feb 2022 00:26:02 +0000 (09:26 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 16 Feb 2022 00:35:25 +0000 (09:35 +0900)
This patch handles the std::length_error exception.

Change-Id: Ia569b59783e48ed1144a89d2c946f6a45e481b6f
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/stub.cc
tests/bundle_unittests/src/test_bundle.cc

index 3b186bf..f8b94c0 100644 (file)
@@ -658,11 +658,13 @@ extern "C" EXPORT_API int bundle_init_byte_array(bundle* b,
   KeyInfo* key_info;
   try {
     std::vector<std::vector<unsigned char>> values(len);
-    key_info = new KeyInfo(Bundle::Type::ByteArray, key, values);
+    key_info = new KeyInfo(Bundle::Type::ByteArray, key, std::move(values));
   } catch (Exception& e) {
     return e.GetErrorCode();
   } catch (const std::bad_alloc& ba) {
     return BUNDLE_ERROR_OUT_OF_MEMORY;
+  } catch (const std::length_error&) {
+    return BUNDLE_ERROR_OUT_OF_MEMORY;
   }
 
   try {
index 6f9ad4f..7b4424d 100644 (file)
@@ -1031,6 +1031,12 @@ TEST_F(BundleTest, bundle_add_byte_array_N) {
 
   ret = bundle_add_byte_array(b, "KEY", 3);
   ASSERT_EQ(ret, BUNDLE_ERROR_KEY_EXISTS);
+
+  ret = bundle_add_byte_array(b, "aaaa", 1918646073);
+  ASSERT_EQ(ret, BUNDLE_ERROR_OUT_OF_MEMORY);
+
+  ret = bundle_add_byte_array(b, "aaaa", -469762038);
+  ASSERT_EQ(ret, BUNDLE_ERROR_OUT_OF_MEMORY);
 }
 
 TEST_F(BundleTest, bundle_init_byte_array_P) {