From dad9228494e3cc03dc477e8109f43119390b53c4 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Mon, 9 Dec 2019 15:52:38 +0100 Subject: Only check for OS specific bad filenames when unpacking When converting a SquashFS image to a tarball, it makes no sense to refuse conversion if the filename is considered evil by the OS. This patch adds an option to is_filename_sane to check if the OS has a problem with the given file name. sqfs2tar sets it to false and converts everything while rdsquashfs sets it to true when unpacking. Signed-off-by: David Oberhollenzer --- unpack/fill_files.c | 2 +- unpack/restore_fstree.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'unpack') diff --git a/unpack/fill_files.c b/unpack/fill_files.c index d22e9d1..b75afbf 100644 --- a/unpack/fill_files.c +++ b/unpack/fill_files.c @@ -114,7 +114,7 @@ static void clear_file_list(void) static int gen_file_list_dfs(const sqfs_tree_node_t *n) { - if (!is_filename_sane((const char *)n->name)) { + if (!is_filename_sane((const char *)n->name, true)) { fprintf(stderr, "Found an entry named '%s', skipping.\n", n->name); return 0; diff --git a/unpack/restore_fstree.c b/unpack/restore_fstree.c index 1de9b05..00d75ef 100644 --- a/unpack/restore_fstree.c +++ b/unpack/restore_fstree.c @@ -112,7 +112,7 @@ static int create_node_dfs(const sqfs_tree_node_t *n, int flags) char *name; int ret; - if (!is_filename_sane((const char *)n->name)) { + if (!is_filename_sane((const char *)n->name, true)) { fprintf(stderr, "Found an entry named '%s', skipping.\n", n->name); return 0; @@ -207,7 +207,7 @@ static int set_attribs(sqfs_xattr_reader_t *xattr, char *path; int ret; - if (!is_filename_sane((const char *)n->name)) + if (!is_filename_sane((const char *)n->name, true)) return 0; if (S_ISDIR(n->inode->base.mode)) { -- cgit v1.2.3