From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Sat, 19 May 2012 17:36:09 +0000 Subject: emulation: Limit integer arguments to 65535 To guard against malicious sequences containing excessively big numbers, limit all parsed numbers to 16 bit range. Doing this here in the parsing routine is a catch-all guard; this doesn't preclude enforcing more stringent limits in the handlers themselves. https://bugzilla.gnome.org/show_bug.cgi?id=676090 --- diff --git a/src/table.c b/src/table.c index 140e8c8..85cf631 100644 --- a/src/table.c +++ b/src/table.c @@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array, if (G_UNLIKELY (*array == NULL)) { *array = g_value_array_new(1); } - g_value_set_long(&value, total); + g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT)); g_value_array_append(*array, &value); } while (i++ < arginfo->length); g_value_unset(&value); diff --git a/src/vteseq.c b/src/vteseq.c index 457c06a..46def5b 100644 --- a/src/vteseq.c +++ b/src/vteseq.c @@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal, GValueArray *params, VteTerminalSequenceHandler handler) { - vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG); + vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT); } static void -- cgit v0.9.0.2