From f2d57a8972f89f089f80dd0e4efeb6806d71806c Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Tue, 17 May 2016 14:45:28 -0700 Subject: do not allow console commands with names longer than 14 characters The maximum length of console command name is hardcoded to be 14 in a few places in the code. In any case, 14 characters should be enough for any command name, let's add compile time check to ensure that this limit is honored. BRANCH=none BUG=none TEST=tried adding a command with a name longer than 14 characters, got a compile error. Change-Id: I11891fcd04983a5618400a602d4b80a478ecf3a9 Signed-off-by: Vadim Bendebury Reviewed-on: https://chromium-review.googlesource.com/345571 Reviewed-by: Randall Spangler --- include/console.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include/console.h') diff --git a/include/console.h b/include/console.h index 75bbd6a335..f1f06b19bd 100644 --- a/include/console.h +++ b/include/console.h @@ -109,12 +109,16 @@ void console_has_input(void); #elif defined(CONFIG_CONSOLE_CMDHELP) #define DECLARE_CONSOLE_COMMAND(name, routine, argdesc, shorthelp, longhelp) \ static const char __con_cmd_label_##name[] = #name; \ + struct size_check##name { \ + int field[2 * (sizeof(__con_cmd_label_##name) < 16) - 1]; }; \ const struct console_command __keep __con_cmd_##name \ __attribute__((section(".rodata.cmds." #name))) \ = {__con_cmd_label_##name, routine, argdesc, shorthelp} #else #define DECLARE_CONSOLE_COMMAND(name, routine, argdesc, shorthelp, longhelp) \ static const char __con_cmd_label_##name[] = #name; \ + struct size_check##name { \ + int field[2 * (sizeof(__con_cmd_label_##name) < 16) - 1]; }; \ const struct console_command __keep __con_cmd_##name \ __attribute__((section(".rodata.cmds." #name))) \ = {__con_cmd_label_##name, routine} -- cgit v1.2.1