diff options
author | Munehisa Kamata <kamatam@amazon.com> | 2018-06-26 12:47:29 -0700 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2018-06-29 16:42:56 +0200 |
commit | ca4823aa2fc28e00400e65473caeede5cadd0da0 (patch) | |
tree | 3f08b80d67000f3327d845158860c8265586d7bd | |
parent | 7198e899ddaba3be42ca8acdc7d8b717b3057fc6 (diff) | |
download | kexec-tools-ca4823aa2fc28e00400e65473caeede5cadd0da0.tar.gz |
arm64: error out if kernel command line is too long
Currently, in arm64, kexec silently truncates kernel command line longer
than COMMAND_LINE_SIZE - 1. Error out in that case as some other
architectures already do that. The error message is copied from x86_64.
Suggested-by: Tom Kirchner <tjk@amazon.com>
Signed-off-by: Munehisa Kamata <kamatam@amazon.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r-- | kexec/arch/arm64/kexec-arm64.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c index a206c17..7a12479 100644 --- a/kexec/arch/arm64/kexec-arm64.c +++ b/kexec/arch/arm64/kexec-arm64.c @@ -598,8 +598,15 @@ int arm64_load_other_segments(struct kexec_info *info, char command_line[COMMAND_LINE_SIZE] = ""; if (arm64_opts.command_line) { + if (strlen(arm64_opts.command_line) > + sizeof(command_line) - 1) { + fprintf(stderr, + "Kernel command line too long for kernel!\n"); + return EFAILED; + } + strncpy(command_line, arm64_opts.command_line, - sizeof(command_line)); + sizeof(command_line) - 1); command_line[sizeof(command_line) - 1] = 0; } |