From 53005fc01f5897f79c1e28fc450c1bbcd4a2555a Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Mon, 18 Mar 2013 19:04:34 +0100 Subject: [PATCH] Fix shell buffer overflow on long argument lists. --- utils/mxsh.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/utils/mxsh.cpp b/utils/mxsh.cpp index 720d89da..470b6a1c 100644 --- a/utils/mxsh.cpp +++ b/utils/mxsh.cpp @@ -316,7 +316,8 @@ void get_and_run_command() } int argc = 0; - const char* argv[256]; + const size_t ARGV_MAX_LENGTH = 2048; + const char* argv[ARGV_MAX_LENGTH]; argv[0] = NULL; bool lastwasspace = true; @@ -346,7 +347,16 @@ void get_and_run_command() } default: escaped = false; - if ( lastwasspace ) { argv[argc++] = command + i; } + if ( lastwasspace ) + { + if ( argc == ARGV_MAX_LENGTH ) + { + fprintf(stderr, "argv max length of %zu entries hit!\n", + ARGV_MAX_LENGTH); + abort(); + } + argv[argc++] = command + i; + } lastwasspace = false; } }