From e8df59be59e7e8b7964f96fea645a20e246d6a9f Mon Sep 17 00:00:00 2001 From: Dave Murphy Date: Sat, 13 Dec 2014 02:32:21 +0000 Subject: [PATCH] check parameters are valid as we parse --- libctru/source/console.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libctru/source/console.c b/libctru/source/console.c index 081473e..a6e4ce2 100644 --- a/libctru/source/console.c +++ b/libctru/source/console.c @@ -207,14 +207,19 @@ ssize_t con_write(struct _reent *r,int fd,const char *ptr, size_t len) { if ( chr == 0x1b && *tmp == '[' ) { bool escaping = true; - char *escapeseq = tmp; - int escapelen = 0; + char *escapeseq = tmp++; + int escapelen = 1; + i++; count++; do { chr = *(tmp++); i++; count++; escapelen++; int parameter, assigned, consumed; + // make sure parameters are positive values and delimited by semicolon + if((chr >= '0' && chr <= '9') || chr == ';') + continue; + switch (chr) { //--------------------------------------- // Cursor directional movement