mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2025-12-10 07:44:41 +01:00
Return fault for duplicate param in SPV
This commit is contained in:
parent
070e812e1b
commit
1a842e0a38
3 changed files with 30 additions and 4 deletions
|
|
@ -1174,7 +1174,11 @@ int cwmp_handle_rpc_cpe_set_parameter_values(struct rpc *rpc)
|
||||||
goto fault;
|
goto fault;
|
||||||
}
|
}
|
||||||
|
|
||||||
xml_data_list_to_dm_parameter_list(&xml_list_set_param_value, &list_set_param_value);
|
fault_code = xml_data_list_to_dm_parameter_list(&xml_list_set_param_value, &list_set_param_value);
|
||||||
|
if (fault_code != FAULT_CPE_NO_FAULT) {
|
||||||
|
err_msg = "Duplicate parameter name found in the SPV parameter list";
|
||||||
|
goto fault;
|
||||||
|
}
|
||||||
|
|
||||||
/* Before set check if exists Device.ManagementServer.InformParameter.{i}.ParameterName with ForcedInform Parameter */
|
/* Before set check if exists Device.ManagementServer.InformParameter.{i}.ParameterName with ForcedInform Parameter */
|
||||||
fault_code = validate_inform_parameter_name(&list_set_param_value);
|
fault_code = validate_inform_parameter_name(&list_set_param_value);
|
||||||
|
|
|
||||||
26
src/xml.c
26
src/xml.c
|
|
@ -1084,10 +1084,30 @@ void dm_parameter_list_to_xml_data_list(struct list_head *dm_parameter_list, str
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void xml_data_list_to_dm_parameter_list(struct list_head *xml_data_list, struct list_head *dm_parameter_list)
|
static int validate_duplicate_param_name(const char *xml_param, struct list_head *dm_parameter_list)
|
||||||
{
|
{
|
||||||
struct xml_list_data *xml_data;
|
struct cwmp_dm_parameter *param_value = NULL;
|
||||||
|
|
||||||
|
if (CWMP_STRLEN(xml_param) == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
list_for_each_entry(param_value, dm_parameter_list, list) {
|
||||||
|
if (CWMP_STRCMP(param_value->name, xml_param) == 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int xml_data_list_to_dm_parameter_list(struct list_head *xml_data_list, struct list_head *dm_parameter_list)
|
||||||
|
{
|
||||||
|
struct xml_list_data *xml_data = NULL;
|
||||||
list_for_each_entry (xml_data, xml_data_list, list) {
|
list_for_each_entry (xml_data, xml_data_list, list) {
|
||||||
|
/* duplicate parameter name should not exist */
|
||||||
|
if (0 != validate_duplicate_param_name(xml_data->param_name, dm_parameter_list)) {
|
||||||
|
return FAULT_CPE_INVALID_ARGUMENTS;
|
||||||
|
}
|
||||||
|
|
||||||
struct cwmp_dm_parameter *dm_parameter;
|
struct cwmp_dm_parameter *dm_parameter;
|
||||||
dm_parameter = calloc(1, sizeof(struct cwmp_dm_parameter));
|
dm_parameter = calloc(1, sizeof(struct cwmp_dm_parameter));
|
||||||
list_add_tail(&dm_parameter->list, dm_parameter_list);
|
list_add_tail(&dm_parameter->list, dm_parameter_list);
|
||||||
|
|
@ -1098,6 +1118,8 @@ void xml_data_list_to_dm_parameter_list(struct list_head *xml_data_list, struct
|
||||||
dm_parameter->notification = xml_data->notification;
|
dm_parameter->notification = xml_data->notification;
|
||||||
dm_parameter->writable =xml_data->notification;
|
dm_parameter->writable =xml_data->notification;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return FAULT_CPE_NO_FAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void xml_data_list_to_cdu_operations_list(struct list_head *xml_data_list, struct list_head *cdu_operations_list)
|
void xml_data_list_to_cdu_operations_list(struct list_head *xml_data_list, struct list_head *cdu_operations_list)
|
||||||
|
|
|
||||||
|
|
@ -326,7 +326,7 @@ void add_xml_data_list(struct list_head *data_list, struct xml_list_data *xml_da
|
||||||
mxml_node_t * build_top_body_soap_response(mxml_node_t *node, const char *method);
|
mxml_node_t * build_top_body_soap_response(mxml_node_t *node, const char *method);
|
||||||
mxml_node_t * build_top_body_soap_request(mxml_node_t *node, const char *method);
|
mxml_node_t * build_top_body_soap_request(mxml_node_t *node, const char *method);
|
||||||
void dm_parameter_list_to_xml_data_list(struct list_head *dm_parameter_list, struct list_head *xml_data_list);
|
void dm_parameter_list_to_xml_data_list(struct list_head *dm_parameter_list, struct list_head *xml_data_list);
|
||||||
void xml_data_list_to_dm_parameter_list(struct list_head *xml_data_list, struct list_head *dm_parameter_list);
|
int xml_data_list_to_dm_parameter_list(struct list_head *xml_data_list, struct list_head *dm_parameter_list);
|
||||||
void xml_data_list_to_cdu_operations_list(struct list_head *xml_data_list, struct list_head *du_op_list);
|
void xml_data_list_to_cdu_operations_list(struct list_head *xml_data_list, struct list_head *du_op_list);
|
||||||
void cdu_operations_result_list_to_xml_data_list(struct list_head *du_op_res_list, struct list_head *xml_data_list);
|
void cdu_operations_result_list_to_xml_data_list(struct list_head *du_op_res_list, struct list_head *xml_data_list);
|
||||||
void cdu_operations_list_to_xml_data_list(struct list_head *du_op_list, struct list_head *xml_data_list);
|
void cdu_operations_list_to_xml_data_list(struct list_head *du_op_list, struct list_head *xml_data_list);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue