diff options
Diffstat (limited to 'tar')
-rw-r--r-- | tar/tar2sqfs.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/tar/tar2sqfs.c b/tar/tar2sqfs.c index 0dad73a..1b7d3aa 100644 --- a/tar/tar2sqfs.c +++ b/tar/tar2sqfs.c @@ -266,7 +266,13 @@ static int process_tar_ball(fstree_t *fs, data_writer_t *data) skip = false; - if (hdr.unknown_record) { + if (hdr.name == NULL || canonicalize_name(hdr.name) != 0) { + fprintf(stderr, "skipping '%s' (invalid name)\n", + hdr.name); + skip = true; + } + + if (!skip && hdr.unknown_record) { fprintf(stderr, "%s: unknown entry type\n", hdr.name); skip = true; } @@ -301,14 +307,6 @@ static int process_tar_ball(fstree_t *fs, data_writer_t *data) continue; } - if (canonicalize_name(hdr.name)) { - fprintf(stderr, "skipping '%s' (invalid name)\n", - hdr.name); - if (skip_entry(STDIN_FILENO, hdr.sb.st_size)) - goto fail; - continue; - } - if (create_node_and_repack_data(&hdr, fs, data)) goto fail; |