From ab063437ce4271d31c150a19390c6d6b18aedf04 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 25 Jul 2019 23:39:04 +0200 Subject: Make sure symlink in fstree_mknode is always set when creating a symlink Signed-off-by: David Oberhollenzer --- lib/fstree/mknode.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/fstree/mknode.c b/lib/fstree/mknode.c index ea0d0aa..c6572fe 100644 --- a/lib/fstree/mknode.c +++ b/lib/fstree/mknode.c @@ -5,6 +5,7 @@ #include #include +#include tree_node_t *fstree_mknode(fstree_t *fs, tree_node_t *parent, const char *name, size_t name_len, const char *extra, @@ -16,6 +17,10 @@ tree_node_t *fstree_mknode(fstree_t *fs, tree_node_t *parent, const char *name, switch (sb->st_mode & S_IFMT) { case S_IFLNK: + if (extra == NULL) { + errno = EINVAL; + return NULL; + } size += strlen(extra) + 1; break; case S_IFDIR: @@ -67,7 +72,8 @@ tree_node_t *fstree_mknode(fstree_t *fs, tree_node_t *parent, const char *name, case S_IFLNK: n->mode = S_IFLNK | 0777; n->data.slink_target = (char *)n->payload; - strcpy(n->data.slink_target, extra); + if (extra != NULL) + strcpy(n->data.slink_target, extra); break; case S_IFBLK: case S_IFCHR: -- cgit v1.2.3