summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMunehisa Kamata <kamatam@amazon.com>2018-06-26 12:47:29 -0700
committerSimon Horman <horms@verge.net.au>2018-06-29 16:42:56 +0200
commitca4823aa2fc28e00400e65473caeede5cadd0da0 (patch)
tree3f08b80d67000f3327d845158860c8265586d7bd
parent7198e899ddaba3be42ca8acdc7d8b717b3057fc6 (diff)
downloadkexec-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.c9
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;
}