lkml.org 
[lkml]   [2020]   [Aug]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: x86/kaslr] x86/kaslr: Replace strlen() with strnlen()
    The following commit has been merged into the x86/kaslr branch of tip:

    Commit-ID: 76167e5c5457aee8fba3edc5b8554183696fc94d
    Gitweb: https://git.kernel.org/tip/76167e5c5457aee8fba3edc5b8554183696fc94d
    Author: Arvind Sankar <nivedita@alum.mit.edu>
    AuthorDate: Sun, 02 Aug 2020 21:15:34 -04:00
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitterDate: Thu, 06 Aug 2020 17:03:19 +02:00

    x86/kaslr: Replace strlen() with strnlen()

    strnlen is safer in case the command line is not NUL-terminated.

    Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20200803011534.730645-2-nivedita@alum.mit.edu
    ---
    arch/x86/boot/compressed/kaslr.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c
    index 735fcb2..6d39743 100644
    --- a/arch/x86/boot/compressed/kaslr.c
    +++ b/arch/x86/boot/compressed/kaslr.c
    @@ -43,6 +43,10 @@
    #define STATIC
    #include <linux/decompress/mm.h>

    +#define _SETUP
    +#include <asm/setup.h> /* For COMMAND_LINE_SIZE */
    +#undef _SETUP
    +
    #ifdef CONFIG_X86_5LEVEL
    unsigned int __pgtable_l5_enabled;
    unsigned int pgdir_shift __ro_after_init = 39;
    @@ -278,7 +282,7 @@ static void handle_mem_options(void)
    if (!args)
    return;

    - len = strlen(args);
    + len = strnlen(args, COMMAND_LINE_SIZE-1);
    tmp_cmdline = malloc(len + 1);
    if (!tmp_cmdline)
    error("Failed to allocate space for tmp_cmdline");
    @@ -425,7 +429,7 @@ static void mem_avoid_init(unsigned long input, unsigned long input_size,
    cmd_line = get_cmd_line_ptr();
    /* Calculate size of cmd_line. */
    if (cmd_line) {
    - cmd_line_size = strlen((char *)cmd_line) + 1;
    + cmd_line_size = strnlen((char *)cmd_line, COMMAND_LINE_SIZE-1) + 1;
    mem_avoid[MEM_AVOID_CMDLINE].start = cmd_line;
    mem_avoid[MEM_AVOID_CMDLINE].size = cmd_line_size;
    add_identity_map(mem_avoid[MEM_AVOID_CMDLINE].start,
    \
     
     \ /
      Last update: 2020-08-07 01:39    [W:3.785 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site