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