diff options
| author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-12-09 15:52:38 +0100 | 
|---|---|---|
| committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-12-09 15:56:01 +0100 | 
| commit | dad9228494e3cc03dc477e8109f43119390b53c4 (patch) | |
| tree | 17d4c2729d331e3858f5184703bd85744448b6d1 /unpack | |
| parent | 6d7db2bd7ce39621f27f9f669690ab606ddc1787 (diff) | |
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 <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'unpack')
| -rw-r--r-- | unpack/fill_files.c | 2 | ||||
| -rw-r--r-- | unpack/restore_fstree.c | 4 | 
2 files changed, 3 insertions, 3 deletions
| 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)) { | 
