summaryrefslogtreecommitdiff
path: root/lib/yang.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/yang.c')
-rw-r--r--lib/yang.c13
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);