← Commit list

c1660fea6

Denis Vlasenko
Denis Vlasenko
2006-11-26
FAILED Duration: 3s

Subject

tar: refuse to untar files with "/../" components

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

archival/libunarchive/get_header_tar.c+6 -1
@@ -157,7 +157,6 @@ char get_header_tar(archive_handle_t *archive_handle)
file_header->name = concat_path_file(tar.prefix, tar.name);
} else
file_header->name = xstrdup(tar.name);
- /* FIXME: add check for /../ attacks */
}
/* Set bits 12-15 of the files mode */
@@ -244,6 +243,12 @@ char get_header_tar(archive_handle_t *archive_handle)
linkname = NULL;
}
#endif
+ if (!strncmp(file_header->name, "/../"+1, 3)
+ || strstr(file_header->name, "/../")
+ ) {
+ bb_error_msg_and_die("name with '..' encountered: '%s'",
+ file_header->name);
+ }
/* Strip trailing '/' in directories */
/* Must be done after mode is set as '/' is used to check if its a directory */