Add aaa-12 修改json解析校验机制

SOL 修改json解析校验机制
修改人:yinbin
检视人:yinbin

Signed-off-by: yinbin <yinbin@cmhi.chinamobile.com>
This commit is contained in:
yinbin 2019-08-28 04:30:00 -07:00
parent fd9b5fffe0
commit 8e6ce1e4d3
1 changed files with 26 additions and 7 deletions

View File

@ -1246,11 +1246,12 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info
goto out;
}
if(!(operate = cJSON_GetObjectItem(root, "operate"))){
printf("[vlan]vlan_config_json_parse: No operate node.\n");
printf("[vlan]vlan_config_json_parse: Json No operate node.\n");
ret = RET_INPUTERR;
goto out;
}
if(!(conf_ifvlan = cJSON_GetObjectItem(root, "conf-ifvlan"))){
printf("[vlan]vlan_config_json_parse: Json No conf_ifvlan node.\n");
ret = RET_INPUTERR;
goto out;
}
@ -1258,7 +1259,7 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info
/* 解析最外层interface数组 */
if_num = cJSON_GetArraySize(conf_ifvlan);
if(if_num == 0){
printf("[vlan]vlan_config_json_parse: json array has no interface.\n");
printf("[vlan]vlan_config_json_parse: Json array has no interface.\n");
ret = RET_INPUTERR;
goto out;
}
@ -1287,7 +1288,10 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info
}
cJSON *ifName = cJSON_GetObjectItem(node, "if-name");
if(!ifName){
continue;
//continue;
printf("[vlan]vlan_config_json_parse: json has no ifName node.\n");
ret = RET_INPUTERR;
goto out;
}
if(NULL == ifName->valuestring){
printf("[vlan]vlan_config_json_parse: ifName->valuestring is null.\n");
@ -1298,7 +1302,10 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info
printf("[vlan]if_vlan_info[%d].if_name=%s\n", i, if_vlan_info[i].if_name);
cJSON *ifAttr = cJSON_GetObjectItem(node, "if-attr");
if(!ifAttr){
continue;
//continue;
printf("[vlan]vlan_config_json_parse: Json has no ifAttr node.\n");
ret = RET_INPUTERR;
goto out;
}
if(NULL == ifAttr->valuestring){
printf("[vlan]vlan_config_json_parse: ifAttr->valuestring is null.\n");
@ -1311,15 +1318,23 @@ ret_code vlan_config_json_parse(pointer input, interface_vlan_info *if_vlan_info
else if(!strcmp(ifAttr->valuestring, "access")){
if_vlan_info[i].attr = LINK_TYPE_ACCESS;
}
else {
printf("[vlan]vlan_config_json_parse: errror: is not trunk or access.\n");
ret = RET_INPUTERR;
goto out;
}
cJSON *vId = cJSON_GetObjectItem(node, "vid");
if(!vId){
continue;
//continue;
printf("[vlan]vlan_config_json_parse: Json has no vId node.\n");
ret = RET_INPUTERR;
goto out;
}
/* 解析内层vid数组 */
vl_num = cJSON_GetArraySize(vId);
if(vl_num == 0){
printf("[vlan]vlan_config_json_parse: json array has no vid.\n");
printf("[vlan]vlan_config_json_parse: Json array has no vid element.\n");
ret = RET_INPUTERR;
goto out;
}
@ -2077,7 +2092,11 @@ ret_code vlan_operate_parse(pointer input, int *oper_type)
ret = RET_OK;
goto out;
}
else {
printf("[vlan]vlan_operate_chk: operate-val is UNKNOWN, error.\n");
ret = RET_INPUTERR;
goto out;
}
out:
if(root){
cJSON_Delete(root);