summaryrefslogtreecommitdiff
path: root/tar
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-12-13 15:47:35 +0100
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-12-13 15:49:00 +0100
commit262fc48eb9e246ddb7315f5a14e7f6f58ca987c1 (patch)
treedc3e342ead34d15db452804d445d6621afe64a5e /tar
parent7ab411dbd2cb066652f5f51a1bc6cc793b7cafad (diff)
Better support for reading/writing non-ASCII xattr values from/to tar
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tar')
-rw-r--r--tar/sqfs2tar.c3
-rw-r--r--tar/tar2sqfs.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/tar/sqfs2tar.c b/tar/sqfs2tar.c
index 6767b95..58fb611 100644
--- a/tar/sqfs2tar.c
+++ b/tar/sqfs2tar.c
@@ -267,9 +267,10 @@ static int get_xattrs(const char *name, const sqfs_inode_generic_t *inode,
ent->key = ent->data;
strcpy(ent->key, (const char *)key->key);
- ent->value = ent->key + strlen(ent->key) + 1;
+ ent->value = (sqfs_u8 *)ent->key + strlen(ent->key) + 1;
memcpy(ent->value, value->value, value->size + 1);
+ ent->value_len = value->size;
ent->next = list;
list = ent;
diff --git a/tar/tar2sqfs.c b/tar/tar2sqfs.c
index 5d40fc5..6be682f 100644
--- a/tar/tar2sqfs.c
+++ b/tar/tar2sqfs.c
@@ -334,7 +334,7 @@ static int copy_xattr(tree_node_t *node, const tar_header_decoded_t *hdr)
}
ret = sqfs_xattr_writer_add(sqfs.xwr, xattr->key, xattr->value,
- strlen(xattr->value));
+ xattr->value_len);
if (ret) {
sqfs_perror(hdr->name, "storing xattr key-value pair",
ret);