Adding upstream version 3.7.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
338ffded6d
commit
76b2c91d7e
52 changed files with 13518 additions and 998 deletions
|
@ -501,6 +501,7 @@ lydjson_data_check_opaq(struct lyd_json_ctx *lydctx, const struct lysc_node *sno
|
|||
LY_ERR ret = LY_SUCCESS;
|
||||
struct lyjson_ctx *jsonctx = lydctx->jsonctx;
|
||||
enum LYJSON_PARSER_STATUS status;
|
||||
uint32_t *prev_lo, temp_lo = 0;
|
||||
|
||||
assert(snode);
|
||||
|
||||
|
@ -523,9 +524,12 @@ lydjson_data_check_opaq(struct lyd_json_ctx *lydctx, const struct lysc_node *sno
|
|||
if ((ret = lydjson_value_type_hint(jsonctx, &status, type_hint_p))) {
|
||||
break;
|
||||
}
|
||||
|
||||
prev_lo = ly_temp_log_options(&temp_lo);
|
||||
if (ly_value_validate(NULL, snode, jsonctx->value, jsonctx->value_len, LY_VALUE_JSON, NULL, *type_hint_p)) {
|
||||
ret = LY_ENOT;
|
||||
}
|
||||
ly_temp_log_options(prev_lo);
|
||||
break;
|
||||
case LYS_LIST:
|
||||
/* lists may not have all its keys */
|
||||
|
@ -671,7 +675,7 @@ lydjson_metadata_finish(struct lyd_json_ctx *lydctx, struct lyd_node **first_p)
|
|||
}
|
||||
|
||||
/* add/correct flags */
|
||||
ret = lyd_parse_set_data_flags(node, &node->meta, (struct lyd_ctx *)lydctx, ext);
|
||||
ret = lyd_parser_set_data_flags(node, &node->meta, (struct lyd_ctx *)lydctx, ext);
|
||||
LY_CHECK_GOTO(ret, cleanup);
|
||||
break;
|
||||
}
|
||||
|
@ -857,7 +861,7 @@ next_entry:
|
|||
LY_CHECK_GOTO(rc, cleanup);
|
||||
|
||||
/* add/correct flags */
|
||||
rc = lyd_parse_set_data_flags(node, &node->meta, (struct lyd_ctx *)lydctx, NULL);
|
||||
rc = lyd_parser_set_data_flags(node, &node->meta, (struct lyd_ctx *)lydctx, NULL);
|
||||
LY_CHECK_GOTO(rc, cleanup);
|
||||
} else {
|
||||
/* create attribute */
|
||||
|
@ -1434,19 +1438,14 @@ lydjson_parse_instance_inner(struct lyd_json_ctx *lydctx, const struct lysc_node
|
|||
|
||||
if (snode->nodetype == LYS_LIST) {
|
||||
/* check all keys exist */
|
||||
r = lyd_parse_check_keys(*node);
|
||||
r = lyd_parser_check_keys(*node);
|
||||
LY_DPARSER_ERR_GOTO(r, rc = r, lydctx, cleanup);
|
||||
}
|
||||
|
||||
if (!(lydctx->parse_opts & LYD_PARSE_ONLY) && !rc) {
|
||||
/* new node validation, autodelete CANNOT occur (it can if multi-error), all nodes are new */
|
||||
r = lyd_validate_new(lyd_node_child_p(*node), snode, NULL, lydctx->val_opts, NULL);
|
||||
/* new node validation */
|
||||
r = lyd_parser_validate_new_implicit((struct lyd_ctx *)lydctx, *node);
|
||||
LY_DPARSER_ERR_GOTO(r, rc = r, lydctx, cleanup);
|
||||
|
||||
/* add any missing default children */
|
||||
r = lyd_new_implicit_r(*node, lyd_node_child_p(*node), NULL, NULL, &lydctx->node_when, &lydctx->node_types,
|
||||
&lydctx->ext_node, (lydctx->val_opts & LYD_VALIDATE_NO_STATE) ? LYD_IMPLICIT_NO_STATE : 0, NULL);
|
||||
LY_CHECK_ERR_GOTO(r, rc = r, cleanup);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
|
@ -1530,7 +1529,7 @@ lydjson_parse_instance(struct lyd_json_ctx *lydctx, struct lyd_node *parent, str
|
|||
LY_CHECK_GOTO(!*node, cleanup);
|
||||
|
||||
/* add/correct flags */
|
||||
r = lyd_parse_set_data_flags(*node, &(*node)->meta, (struct lyd_ctx *)lydctx, ext);
|
||||
r = lyd_parser_set_data_flags(*node, &(*node)->meta, (struct lyd_ctx *)lydctx, ext);
|
||||
LY_CHECK_ERR_GOTO(r, rc = r, cleanup);
|
||||
|
||||
if (!(lydctx->parse_opts & LYD_PARSE_ONLY)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue