mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2025-12-09 23:34: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;
|
||||
}
|
||||
|
||||
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 */
|
||||
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) {
|
||||
/* 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;
|
||||
dm_parameter = calloc(1, sizeof(struct cwmp_dm_parameter));
|
||||
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->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)
|
||||
|
|
|
|||
|
|
@ -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_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 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 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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue