tree schema BUGFIX check return val
diff --git a/src/tree_schema.c b/src/tree_schema.c
index 1dd9319..d7ac8d8 100644
--- a/src/tree_schema.c
+++ b/src/tree_schema.c
@@ -722,10 +722,12 @@
s = predicates;
/* print key predicate */
- asprintf(&predicates, "%s[%s='%%s']", s ? s : "", key->name);
- if (s) {
+ if (asprintf(&predicates, "%s[%s='%%s']", s ? s : "", key->name) == -1) {
free(s);
+ free(path);
+ return NULL;
}
+ free(s);
}
s = buffer ? strdup(buffer) : path;
if (buffer) {
@@ -733,9 +735,7 @@
} else {
len = asprintf(&path, "%s%s", predicates ? predicates : "", s ? s : "");
}
- if (predicates) {
- free(predicates);
- }
+ free(predicates);
free(s);
if (buffer && (buflen <= (size_t)len)) {