diff options
Diffstat (limited to 'lib/common')
-rw-r--r-- | lib/common/hardlink.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/common/hardlink.c b/lib/common/hardlink.c index 031724b..f8d4d4a 100644 --- a/lib/common/hardlink.c +++ b/lib/common/hardlink.c @@ -49,9 +49,9 @@ static int map_nodes(rbtree_t *inumtree, sqfs_hard_link_t **out, goto fail_oom; lnk->inode_number = idx; - lnk->target = sqfs_tree_node_get_path(target); - if (lnk->target == NULL) - goto fail_oom; + ret = sqfs_tree_node_get_path(target, &lnk->target); + if (ret != 0) + goto fail_path; if (canonicalize_name(lnk->target) == 0) { lnk->next = (*out); @@ -61,6 +61,10 @@ static int map_nodes(rbtree_t *inumtree, sqfs_hard_link_t **out, free(lnk); } return 0; +fail_path: + sqfs_perror(NULL, "re-constructing hard link path", ret); + free(lnk); + return -1; fail_oom: fputs("detecting hard links in file system tree: out of memory\n", stderr); |