From b7c6fe283a3c787a26224265a0b0cde88461cc96 Mon Sep 17 00:00:00 2001 From: dwolav200 Date: Tue, 14 Jul 2026 14:37:02 -0400 Subject: [PATCH 1/4] RDKEMW-21599 : Control manager crashed on executing tr181 command --- src/rfc/ctrlm_rfc_attr.cpp | 4 ++-- src/voice/ctrlm_voice_obj.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rfc/ctrlm_rfc_attr.cpp b/src/rfc/ctrlm_rfc_attr.cpp index f9e996bb..25903361 100644 --- a/src/rfc/ctrlm_rfc_attr.cpp +++ b/src/rfc/ctrlm_rfc_attr.cpp @@ -71,6 +71,8 @@ void ctrlm_rfc_attr_t::set_rfc_value(const std::string &value) { json_t *temp = this->value_json; json_error_t json_error; this->value_json = json_loads((const char *)decoded_buf, JSON_REJECT_DUPLICATES, &json_error); + free(decoded_buf); + decoded_buf = NULL; if(this->value_json) { XLOGD_INFO("successfully got JSON from encoded string, alert the listeners"); json_decref(temp); @@ -80,8 +82,6 @@ void ctrlm_rfc_attr_t::set_rfc_value(const std::string &value) { this->value_json = temp; return; // return here, we don't want to call listeners on invalid data } - free(decoded_buf); - decoded_buf = NULL; } else { XLOGD_ERROR("failed to decode base64"); return; // return here, we don't want to call listeners on invalid data diff --git a/src/voice/ctrlm_voice_obj.cpp b/src/voice/ctrlm_voice_obj.cpp index 43f28c05..bbaf35a5 100644 --- a/src/voice/ctrlm_voice_obj.cpp +++ b/src/voice/ctrlm_voice_obj.cpp @@ -3982,8 +3982,6 @@ xrsr_power_mode_t voice_xrsr_power_map(ctrlm_power_state_t ctrlm_power_state) { } void ctrlm_voice_t::voice_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { - bool enabled = true; - XLOGD_INFO("processing RFC values"); attr.get_rfc_value(JSON_INT_NAME_VOICE_VREX_REQUEST_TIMEOUT, this->prefs.timeout_vrex_connect,0); @@ -4104,6 +4102,7 @@ void ctrlm_voice_t::voice_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { } if(attr.get_rfc_value(JSON_BOOL_NAME_VOICE_FORCE_VOICE_SETTINGS, this->prefs.force_voice_settings) && this->prefs.force_voice_settings) { + bool enabled = true; attr.get_rfc_value(JSON_BOOL_NAME_VOICE_ENABLE, enabled); attr.get_rfc_value(JSON_STR_NAME_VOICE_URL_SRC_PTT, this->prefs.server_url_src_ptt); attr.get_rfc_value(JSON_STR_NAME_VOICE_URL_SRC_FF, this->prefs.server_url_src_ff); @@ -4125,6 +4124,7 @@ void ctrlm_voice_t::voice_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { } void ctrlm_voice_t::vsdk_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { + XLOGD_INFO("processing RFC values"); json_t *obj_vsdk = NULL; if(attr.get_rfc_json_value(&obj_vsdk) && obj_vsdk) { XLOGD_INFO("VSDK values from XCONF, reopening xrsr.."); @@ -4133,7 +4133,8 @@ void ctrlm_voice_t::vsdk_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { } // This is temporary until the VSDK supports receiving a config on the fly this->voice_sdk_close(); - this->voice_sdk_open(obj_vsdk); + this->vsdk_config = obj_vsdk; // Transfer ownership + this->voice_sdk_open(this->vsdk_config); this->voice_sdk_update_routes(); // Set init message if read from shared memory @@ -4150,7 +4151,6 @@ void ctrlm_voice_t::vsdk_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { } else { this->voice_init_set(init.c_str(), false); } - json_decref(obj_vsdk); } } From 43ed6f5331a1922a60fdc924d58dab2f61a18de7 Mon Sep 17 00:00:00 2001 From: dwolav200 Date: Wed, 15 Jul 2026 14:52:21 -0400 Subject: [PATCH 2/4] fix copilot concern --- src/voice/ctrlm_voice_obj.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/voice/ctrlm_voice_obj.cpp b/src/voice/ctrlm_voice_obj.cpp index e5999f55..110c4a09 100644 --- a/src/voice/ctrlm_voice_obj.cpp +++ b/src/voice/ctrlm_voice_obj.cpp @@ -4018,6 +4018,8 @@ void ctrlm_voice_t::vsdk_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { XLOGD_INFO("VSDK values from XCONF, reopening xrsr.."); if(this->vsdk_config) { json_object_update_missing(obj_vsdk, this->vsdk_config); + json_decref(this->vsdk_config); + this->vsdk_config = NULL; } // This is temporary until the VSDK supports receiving a config on the fly this->voice_sdk_close(); From 0cd135e24bf8e44ae58197155dd494cd23af2340 Mon Sep 17 00:00:00 2001 From: dwolav200 Date: Wed, 15 Jul 2026 14:54:09 -0400 Subject: [PATCH 3/4] fix copilot concern --- src/rfc/ctrlm_rfc_attr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rfc/ctrlm_rfc_attr.cpp b/src/rfc/ctrlm_rfc_attr.cpp index 25903361..0e52ee19 100644 --- a/src/rfc/ctrlm_rfc_attr.cpp +++ b/src/rfc/ctrlm_rfc_attr.cpp @@ -70,7 +70,7 @@ void ctrlm_rfc_attr_t::set_rfc_value(const std::string &value) { // Convert to JSON json_t *temp = this->value_json; json_error_t json_error; - this->value_json = json_loads((const char *)decoded_buf, JSON_REJECT_DUPLICATES, &json_error); + this->value_json = json_loadb((const char *)decoded_buf, decoded_buf_len, JSON_REJECT_DUPLICATES, &json_error); free(decoded_buf); decoded_buf = NULL; if(this->value_json) { From 47c9158641ad318e9667e12716297e6b0a49265d Mon Sep 17 00:00:00 2001 From: dwolav200 Date: Wed, 15 Jul 2026 14:56:29 -0400 Subject: [PATCH 4/4] more copilot fixes --- src/voice/ctrlm_voice_obj.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/voice/ctrlm_voice_obj.cpp b/src/voice/ctrlm_voice_obj.cpp index 110c4a09..2bc56102 100644 --- a/src/voice/ctrlm_voice_obj.cpp +++ b/src/voice/ctrlm_voice_obj.cpp @@ -4018,11 +4018,13 @@ void ctrlm_voice_t::vsdk_rfc_retrieved_handler(const ctrlm_rfc_attr_t& attr) { XLOGD_INFO("VSDK values from XCONF, reopening xrsr.."); if(this->vsdk_config) { json_object_update_missing(obj_vsdk, this->vsdk_config); - json_decref(this->vsdk_config); - this->vsdk_config = NULL; } // This is temporary until the VSDK supports receiving a config on the fly this->voice_sdk_close(); + if(this->vsdk_config) { + json_decref(this->vsdk_config); + this->vsdk_config = NULL; + } this->vsdk_config = obj_vsdk; // Transfer ownership this->voice_sdk_open(this->vsdk_config); this->voice_sdk_update_routes();