diff options
author | Linus Torvalds | 2021-11-08 09:15:45 -0800 |
---|---|---|
committer | Linus Torvalds | 2021-11-08 09:15:45 -0800 |
commit | 1e9ed9360f80d13e41684ca458f01fdf922c7c57 (patch) | |
tree | 379fcb30fd239de0f95fcf10d47cae5d31fa39b2 /usr/gen_init_cpio.c | |
parent | 67b7e1f2410ecb94b86749cfbd1edf6d66ca237d (diff) | |
parent | 8212f8986d311ccf6a72305e6bdbd814691701d6 (diff) |
Merge tag 'kbuild-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
Pull Kbuild updates from Masahiro Yamada:
- Remove the global -isystem compiler flag, which was made possible by
the introduction of <linux/stdarg.h>
- Improve the Kconfig help to print the location in the top menu level
- Fix "FORCE prerequisite is missing" build warning for sparc
- Add new build targets, tarzst-pkg and perf-tarzst-src-pkg, which
generate a zstd-compressed tarball
- Prevent gen_init_cpio tool from generating a corrupted cpio when
KBUILD_BUILD_TIMESTAMP is set to 2106-02-07 or later
- Misc cleanups
* tag 'kbuild-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (28 commits)
kbuild: use more subdir- for visiting subdirectories while cleaning
sh: remove meaningless archclean line
initramfs: Check timestamp to prevent broken cpio archive
kbuild: split DEBUG_CFLAGS out to scripts/Makefile.debug
gen_init_cpio: add static const qualifiers
kbuild: Add make tarzst-pkg build option
scripts: update the comments of kallsyms support
sparc: Add missing "FORCE" target when using if_changed
kconfig: refactor conf_touch_dep()
kconfig: refactor conf_write_dep()
kconfig: refactor conf_write_autoconf()
kconfig: add conf_get_autoheader_name()
kconfig: move sym_escape_string_value() to confdata.c
kconfig: refactor listnewconfig code
kconfig: refactor conf_write_symbol()
kconfig: refactor conf_write_heading()
kconfig: remove 'const' from the return type of sym_escape_string_value()
kconfig: rename a variable in the lexer to a clearer name
kconfig: narrow the scope of variables in the lexer
kconfig: Create links to main menu items in search
...
Diffstat (limited to 'usr/gen_init_cpio.c')
-rw-r--r-- | usr/gen_init_cpio.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/usr/gen_init_cpio.c b/usr/gen_init_cpio.c index 03b21189d58b..0e2c8a5838b1 100644 --- a/usr/gen_init_cpio.c +++ b/usr/gen_init_cpio.c @@ -188,7 +188,7 @@ struct generic_type { mode_t mode; }; -static struct generic_type generic_type_table[] = { +static const struct generic_type generic_type_table[] = { [GT_DIR] = { .type = "dir", .mode = S_IFDIR @@ -320,6 +320,12 @@ static int cpio_mkfile(const char *name, const char *location, goto error; } + if (buf.st_mtime > 0xffffffff) { + fprintf(stderr, "%s: Timestamp exceeds maximum cpio timestamp, clipping.\n", + location); + buf.st_mtime = 0xffffffff; + } + filebuf = malloc(buf.st_size); if (!filebuf) { fprintf (stderr, "out of memory\n"); @@ -491,7 +497,7 @@ static void usage(const char *prog) prog); } -struct file_handler file_handler_table[] = { +static const struct file_handler file_handler_table[] = { { .type = "file", .handler = cpio_mkfile_line, @@ -551,6 +557,16 @@ int main (int argc, char *argv[]) } } + /* + * Timestamps after 2106-02-07 06:28:15 UTC have an ascii hex time_t + * representation that exceeds 8 chars and breaks the cpio header + * specification. + */ + if (default_mtime > 0xffffffff) { + fprintf(stderr, "ERROR: Timestamp too large for cpio format\n"); + exit(1); + } + if (argc - optind != 1) { usage(argv[0]); exit(1); |