diff options
Diffstat (limited to 'tar')
-rw-r--r-- | tar/sqfs2tar.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tar/sqfs2tar.c b/tar/sqfs2tar.c index 3e64b45..1e05cd4 100644 --- a/tar/sqfs2tar.c +++ b/tar/sqfs2tar.c @@ -266,6 +266,16 @@ static int write_tree_dfs(const sqfs_tree_node_t *n) if (n->parent == NULL && S_ISDIR(n->inode->base.mode)) goto skip_hdr; + if (!is_filename_sane((const char *)n->name)) { + fprintf(stderr, "Found a file named '%s', skipping.\n", + n->name); + if (dont_skip) { + fputs("Not allowed to skip files, aborting!\n", stderr); + return -1; + } + return 0; + } + name = sqfs_tree_node_get_path(n); if (name == NULL) { perror("resolving tree node path"); |