diff options
Diffstat (limited to 'lib/yang.c')
| -rw-r--r-- | lib/yang.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/yang.c b/lib/yang.c index 702fcf436d..6c1aed00cc 100644 --- a/lib/yang.c +++ b/lib/yang.c @@ -25,6 +25,11 @@ DEFINE_MTYPE_STATIC(LIB, YANG_DATA, "YANG data structure"); #define yang_lyd_find_xpath3(ctx_node, tree, xpath, format, prefix_data, vars, \ set) \ lyd_find_xpath3(ctx_node, tree, xpath, vars, set) + +#ifndef LYD_NEW_VAL_OUTPUT +#define LYD_NEW_VAL_OUTPUT LYD_NEW_PATH_OUTPUT +#endif + #else #define yang_lyd_find_xpath3(ctx_node, tree, xpath, format, prefix_data, vars, \ set) \ @@ -671,7 +676,7 @@ void yang_dnode_rpc_output_add(struct lyd_node *output, const char *xpath, LY_ERR err; err = lyd_new_path(output, ly_native_ctx, xpath, value, - LYD_NEW_PATH_OUTPUT | LYD_NEW_PATH_UPDATE, NULL); + LYD_NEW_VAL_OUTPUT | LYD_NEW_PATH_UPDATE, NULL); assert(err == LY_SUCCESS); } @@ -897,7 +902,7 @@ char *yang_convert_lyd_format(const char *data, size_t data_len, assert(out_format != LYD_LYB); - if (in_format != LYD_LYB && !MGMT_MSG_VALIDATE_NUL_TERM(data, data_len)) { + if (in_format != LYD_LYB && (!data_len || data[data_len - 1] != 0)) { zlog_err("Corrupt input data, no NUL terminating byte"); return NULL; } @@ -1393,8 +1398,10 @@ LY_ERR yang_lyd_trim_xpath(struct lyd_node **root, const char *xpath) } } darr_foreach_i (remove, i) { - if (remove[i] == *root) + if (remove[i] == *root) { + assert(*root); *root = (*root)->next; + } lyd_free_tree(remove[i]); } darr_free(remove); |
