summaryrefslogtreecommitdiff
path: root/lib/fstree
diff options
context:
space:
mode:
Diffstat (limited to 'lib/fstree')
-rw-r--r--lib/fstree/fstree.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/fstree/fstree.c b/lib/fstree/fstree.c
index 56ca528..91c32f8 100644
--- a/lib/fstree/fstree.c
+++ b/lib/fstree/fstree.c
@@ -156,16 +156,23 @@ tree_node_t *fstree_add_file(fstree_t *fs, const char *path, uint16_t mode,
char *ptr;
count = filesz / fs->block_size;
- extra = sizeof(uint32_t) * count + strlen(input) + 1;
+ extra = sizeof(uint32_t) * count;
+
+ if (input != NULL)
+ extra += strlen(input) + 1;
mode &= 07777;
node = fstree_add(fs, path, S_IFREG | mode, uid, gid, extra);
if (node != NULL) {
- ptr = (char *)(node->data.file->blocksizes + count);
- strcpy(ptr, input);
+ if (input != NULL) {
+ ptr = (char *)(node->data.file->blocksizes + count);
+ strcpy(ptr, input);
+ node->data.file->input_file = ptr;
+ } else {
+ node->data.file->input_file = NULL;
+ }
- node->data.file->input_file = ptr;
node->data.file->size = filesz;
}
return node;