summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-06-22 23:49:39 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-06-22 23:49:59 +0200
commitc9ba7b8ae1064cd64894e98c09863123d81e8e12 (patch)
tree93d0f4e14ba786d3e749e25e9445e7a7ca915237
parent56786917339c1ac2190b8b903eaf79e60d726973 (diff)
fix: always set permissions on symlinks to 0777
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r--lib/fstree/mknode.c1
-rw-r--r--tests/mknode_slink.c4
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/fstree/mknode.c b/lib/fstree/mknode.c
index 247e2b5..e4620f5 100644
--- a/lib/fstree/mknode.c
+++ b/lib/fstree/mknode.c
@@ -57,6 +57,7 @@ tree_node_t *fstree_mknode(fstree_t *fs, tree_node_t *parent, const char *name,
strcpy(n->data.file->input_file, extra);
break;
case S_IFLNK:
+ n->mode = S_IFLNK | 0777;
n->data.slink_target = (char *)n->payload;
strcpy(n->data.slink_target, extra);
break;
diff --git a/tests/mknode_slink.c b/tests/mknode_slink.c
index 1cea92d..6dbccc8 100644
--- a/tests/mknode_slink.c
+++ b/tests/mknode_slink.c
@@ -22,7 +22,7 @@ int main(void)
node = fstree_mknode(&fs, NULL, "symlink", 7, "target", &sb);
assert(node->uid == sb.st_uid);
assert(node->gid == sb.st_gid);
- assert(node->mode == sb.st_mode);
+ assert(node->mode == (S_IFLNK | 0777));
assert(node->parent == NULL);
assert((char *)node->name >= (char *)node->payload);
assert(node->data.slink_target >= (char *)node->payload);
@@ -34,7 +34,7 @@ int main(void)
node = fstree_mknode(&fs, NULL, "symlink", 7, "", &sb);
assert(node->uid == sb.st_uid);
assert(node->gid == sb.st_gid);
- assert(node->mode == sb.st_mode);
+ assert(node->mode == (S_IFLNK | 0777));
assert(node->parent == NULL);
assert((char *)node->name >= (char *)node->payload);
assert(node->data.slink_target >= (char *)node->payload);