[Keymanager] Added copying password before passing to lambda
authorPiotr Kosko <p.kosko@samsung.com>
Tue, 22 Mar 2016 14:07:38 +0000 (15:07 +0100)
committerPiotr Kosko <p.kosko@samsung.com>
Tue, 22 Mar 2016 14:10:59 +0000 (15:10 +0100)
[Bug] Test KeyManager_getData_with_password sometimes fail on wearable.

[Verification] Tests results are stable, mentioned test not fail.

Change-Id: Ib9bb65242c46335c234b0dbff01dbaff555860cf
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
src/keymanager/keymanager_instance.cc

index 3a5439ecc405c92f18c860040b2f8944f6a10b4c..62ce7bf64f5890696920ac471c9e5feb192ed447 100644 (file)
@@ -144,11 +144,11 @@ void KeyManagerInstance::SaveData(const picojson::value& args,
 
   double callback_id = args.get("callbackId").get<double>();
 
-  const char* password = nullptr;
+  std::string password;
 
   if (password_value.is<std::string>()) {
-    password = (password_value.get<std::string>()).c_str();
-    LoggerE("password %s ", password);
+    password = password_value.get<std::string>();
+    LoggerE("password %s ", password.c_str());
   }
 
   auto save_data = [data_raw, password, alias](const std::shared_ptr<picojson::value>& result) {
@@ -157,7 +157,7 @@ void KeyManagerInstance::SaveData(const picojson::value& args,
     std::copy(data_raw.begin(), data_raw.end(), data);
 
     ckmc_raw_buffer_s raw_data { data, data_raw.size() };
-    ckmc_policy_s policy { const_cast<char*>(password), true };
+    ckmc_policy_s policy { const_cast<char*>(password.c_str()), true };
 
     int ret = ckmc_save_data(alias.c_str(), raw_data, policy);