Fix string getter implementation 15/307015/3
authorHwankyu Jhun <h.jhun@samsung.com>
Mon, 4 Mar 2024 02:14:04 +0000 (11:14 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Mon, 4 Mar 2024 02:24:43 +0000 (11:24 +0900)
In the previous implementation, the file does not have the null-terminated string
if the data is string type. After refactored the implementation, the file has
the null-terminated string. The preference API checks whether the last character
is the null-terminated string or not. And, if it's not, the null-terminated string
will be added. This patch is for backward compatibility.

Change-Id: Ia0a50d008be7f66616410c80d98b963dc36e68ad
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
preference/file-internal.cc

index b32e832015277853add78ddb633349a78acf9462..cf250ed78d45ea5b1ad83964ec68e135293f8bb8 100644 (file)
@@ -117,6 +117,11 @@ std::unique_ptr<Data> File::GetData() {
     if (index == raw_data_.size())
       return nullptr;
 
+    if (raw_data_[raw_data_.size() - 1] != '\0') {
+      _W("Last character is not a null-terminated string");
+      raw_data_.push_back(0x00);
+    }
+
     const char* str = reinterpret_cast<const char*>(&raw_data_[index]);
     data->SetString(str);
   } else if (data_type == Data::Type::INT) {