diff --git a/services/config/config_defs.h b/services/config/config_defs.h
index 77eea44..7b4838a 100644
--- a/services/config/config_defs.h
+++ b/services/config/config_defs.h
@@ -265,14 +265,14 @@
   virtual int IsHDRSupported(uint32_t disp_id, bool *supported) DEFAULT_RET
   virtual int IsWCGSupported(uint32_t disp_id, bool *supported) DEFAULT_RET
   virtual int SetLayerAsMask(uint32_t disp_id, uint64_t layer_id) DEFAULT_RET
-  virtual int GetDebugProperty(const std::string prop_name, std::string value) DEFAULT_RET
+  virtual int GetDebugProperty(const std::string prop_name, std::string *value) DEFAULT_RET
   virtual int GetActiveBuiltinDisplayAttributes(Attributes *attr) DEFAULT_RET
   virtual int SetPanelLuminanceAttributes(uint32_t disp_id, float min_lum,
                                           float max_lum) DEFAULT_RET
   virtual int IsBuiltInDisplay(uint32_t disp_id, bool *is_builtin) DEFAULT_RET
   virtual int IsAsyncVDSCreationSupported(bool *supported) DEFAULT_RET
   virtual int CreateVirtualDisplay(uint32_t width, uint32_t height, int format) DEFAULT_RET
-  virtual int GetSupportedDSIBitClks(uint32_t disp_id, std::vector<uint64_t> bit_clks) DEFAULT_RET
+  virtual int GetSupportedDSIBitClks(uint32_t disp_id, std::vector<uint64_t> *bit_clks) DEFAULT_RET
   virtual int GetDSIClk(uint32_t disp_id, uint64_t *bit_clk) DEFAULT_RET
   virtual int SetDSIClk(uint32_t disp_id, uint64_t bit_clk) DEFAULT_RET
   virtual int SetCWBOutputBuffer(uint32_t disp_id, const Rect rect, bool post_processed,
@@ -282,6 +282,10 @@
   virtual int IsRotatorSupportedFormat(int hal_format, bool ubwc, bool *supported) DEFAULT_RET
   virtual int ControlQsyncCallback(bool enable) DEFAULT_RET
 
+  // deprecated APIs
+  virtual int GetDebugProperty(const std::string prop_name, std::string value) DEFAULT_RET
+  virtual int GetSupportedDSIBitClks(uint32_t disp_id, std::vector<uint64_t> bit_clks) DEFAULT_RET
+
  protected:
   virtual ~ConfigInterface() { }
 };
diff --git a/services/config/src/client_impl.cpp b/services/config/src/client_impl.cpp
index b3dd3e8..c11fa3c 100644
--- a/services/config/src/client_impl.cpp
+++ b/services/config/src/client_impl.cpp
@@ -538,11 +538,13 @@
   return error;
 }
 
-int ClientImpl::GetDebugProperty(const std::string prop_name, std::string value) {
+int ClientImpl::GetDebugProperty(const std::string prop_name, std::string *value) {
   ByteStream input_params;
-  uint8_t *data_input = reinterpret_cast<uint8_t*>(const_cast<char*>(prop_name.data()));
+  std::string prop(prop_name);
+  prop += '\0';
+  uint8_t *data_input = reinterpret_cast<uint8_t*>(const_cast<char*>(prop.data()));
   input_params.setToExternal(reinterpret_cast<uint8_t*>(data_input),
-                             prop_name.size() * sizeof(char));
+                             prop.size() * sizeof(char));
   ByteStream output_params;
   int error = 0;
   auto hidl_cb = [&error, &output_params] (int32_t err, ByteStream params, HandleStream handles) {
@@ -554,9 +556,9 @@
 
   const uint8_t *data = output_params.data();
   const char *name = reinterpret_cast<const char *>(data);
-  std::string output(name);
   if (!error) {
-    value = output;
+    std::string output(name);
+    *value = output;
   }
 
   return error;
@@ -645,7 +647,7 @@
   return error;
 }
 
-int ClientImpl::GetSupportedDSIBitClks(uint32_t disp_id, std::vector<uint64_t> bit_clks) {
+int ClientImpl::GetSupportedDSIBitClks(uint32_t disp_id, std::vector<uint64_t> *bit_clks) {
   ByteStream input_params;
   input_params.setToExternal(reinterpret_cast<uint8_t*>(&disp_id), sizeof(uint32_t));
   ByteStream output_params;
@@ -662,7 +664,7 @@
     const uint64_t *bit_clks_data = reinterpret_cast<const uint64_t *>(data);
     int num_bit_clks = static_cast<int>(output_params.size() / sizeof(uint64_t));
     for (int i = 0; i < num_bit_clks; i++) {
-      bit_clks.push_back(bit_clks_data[i]);
+      bit_clks->push_back(bit_clks_data[i]);
     }
   }
 
diff --git a/services/config/src/client_impl.h b/services/config/src/client_impl.h
index f90a4e0..085fc22 100644
--- a/services/config/src/client_impl.h
+++ b/services/config/src/client_impl.h
@@ -84,13 +84,13 @@
   virtual int IsHDRSupported(uint32_t disp_id, bool *supported);
   virtual int IsWCGSupported(uint32_t disp_id, bool *supported);
   virtual int SetLayerAsMask(uint32_t disp_id, uint64_t layer_id);
-  virtual int GetDebugProperty(const std::string prop_name, std::string value);
+  virtual int GetDebugProperty(const std::string prop_name, std::string *value);
   virtual int GetActiveBuiltinDisplayAttributes(Attributes *attr);
   virtual int SetPanelLuminanceAttributes(uint32_t disp_id, float min_lum, float max_lum);
   virtual int IsBuiltInDisplay(uint32_t disp_id, bool *is_builtin);
   virtual int IsAsyncVDSCreationSupported(bool *supported);
   virtual int CreateVirtualDisplay(uint32_t width, uint32_t height, int format);
-  virtual int GetSupportedDSIBitClks(uint32_t disp_id, std::vector<uint64_t> bit_clks);
+  virtual int GetSupportedDSIBitClks(uint32_t disp_id, std::vector<uint64_t> *bit_clks);
   virtual int GetDSIClk(uint32_t disp_id, uint64_t *bit_clk);
   virtual int SetDSIClk(uint32_t disp_id, uint64_t bit_clk);
   virtual int SetCWBOutputBuffer(uint32_t disp_id, const Rect rect, bool post_processed,
diff --git a/services/config/src/device_impl.cpp b/services/config/src/device_impl.cpp
index 97e8a82..a448268 100644
--- a/services/config/src/device_impl.cpp
+++ b/services/config/src/device_impl.cpp
@@ -495,9 +495,10 @@
   const uint8_t *data = input_params.data();
   const char *name = reinterpret_cast<const char *>(data);
   std::string prop_name(name);
-  int32_t error = intf_->GetDebugProperty(prop_name, value);
+  int32_t error = intf_->GetDebugProperty(prop_name, &value);
+  value += '\0';
   uint8_t *data_output = reinterpret_cast<uint8_t*>(value.data());
-  output_params.setToExternal(reinterpret_cast<uint8_t*>(&data_output),
+  output_params.setToExternal(reinterpret_cast<uint8_t*>(data_output),
                               value.size() * sizeof(char));
 
   _hidl_cb(error, output_params, {});
@@ -572,7 +573,7 @@
 
   const uint8_t *data = input_params.data();
   disp_id = reinterpret_cast<const uint32_t*>(data);
-  int32_t error = intf_->GetSupportedDSIBitClks(*disp_id, bit_clks);
+  int32_t error = intf_->GetSupportedDSIBitClks(*disp_id, &bit_clks);
 
   bit_clks_data = reinterpret_cast<uint64_t *>(malloc(sizeof(uint64_t) * bit_clks.size()));
   for (int i = 0; i < bit_clks.size(); i++) {
