diff options
-rw-r--r-- | src/system/dlt-system-shell.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/system/dlt-system-shell.c b/src/system/dlt-system-shell.c index 61b4b50..5a35593 100644 --- a/src/system/dlt-system-shell.c +++ b/src/system/dlt-system-shell.c @@ -55,18 +55,31 @@ #include <string.h> #include <stdlib.h> +#define DLT_SHELL_COMMAND_MAX_LENGTH 1024 + DLT_IMPORT_CONTEXT(dltsystem) DLT_DECLARE_CONTEXT(shellContext) int dlt_shell_injection_callback(uint32_t service_id, void *data, uint32_t length) { + (void) length; + DLT_LOG(shellContext,DLT_LOG_DEBUG, DLT_STRING("dlt-system-shell, injection callback")); - char text[1024]; + char text[DLT_SHELL_COMMAND_MAX_LENGTH]; int syserr = 0; - strncpy(text,data,length); - + if(length<DLT_SHELL_COMMAND_MAX_LENGTH-2) + { + strncpy(text,data,length); + text[length] = 0; + } + else + { + strncpy(text,data,DLT_SHELL_COMMAND_MAX_LENGTH-2); + text[DLT_SHELL_COMMAND_MAX_LENGTH-1] = 0; + } + DLT_LOG(shellContext,DLT_LOG_DEBUG, DLT_STRING("dlt-system-shell, injection injection id:"), DLT_UINT32(service_id)); |