[PATCH v2 0/1] MR7473: winetest: Avoid underflow when computing filtered output size.
-- v2: winetest: Avoid underflow when computing filtered output size. https://gitlab.winehq.org/wine/wine/-/merge_requests/7473
From: Rémi Bernon <rbernon(a)codeweavers.com> --- programs/winetest/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/programs/winetest/main.c b/programs/winetest/main.c index f505b85323a..755e4eb6e2c 100644 --- a/programs/winetest/main.c +++ b/programs/winetest/main.c @@ -909,11 +909,12 @@ static void *filter_data( const char *data, DWORD size, DWORD *output_size ) char *ret; if (!(ret = malloc( size + 1 ))) return NULL; - for (i = j = eol = 0; i < size; i++) + for (i = j = 0, eol = -1; i < size; i++) { if (data[i] == '\x1b' && data[i + 1] == '[') { while (data[i] && data[i] != 'm') i++; + eol = i; } else if (data[i]) ret[j++] = data[i]; if (!strncmp( data + i, " Test succeeded", 15 )) ignore += i + 15 - eol; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/7473
Happens because j is the length without ANSI codes, and `ignore` striped entire "\n.*Test succeeded" lines, which may also include ANSI codes, removing them twice from the total. v2: Fix it properly instead of hacking it. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7473#note_96605
participants (1)
-
Rémi Bernon