From 6e0c663a895fc4d24b9745675cd45f3d8b457680 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 20 May 2019 05:35:46 +0000 Subject: [PATCH] Fix the color space parameter in RGB SGR, from Brad Town. --- input.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/input.c b/input.c index a9f0acc9..4095c05d 100644 --- a/input.c +++ b/input.c @@ -1938,23 +1938,25 @@ input_csi_dispatch_sgr_colon(struct input_ctx *ictx, u_int i) } return; } - if (p[0] != 38 && p[0] != 48) + if (n < 2 || (p[0] != 38 && p[0] != 48)) return; - if (p[1] == -1) - i = 2; - else - i = 1; - switch (p[i]) { + switch (p[1]) { case 2: - if (n < i + 4) + if (n < 3) break; - input_csi_dispatch_sgr_rgb_do(ictx, p[0], p[i + 1], p[i + 2], - p[i + 3]); + if (n == 5) + i = 2; + else + i = 3; + if (n < i + 3) + break; + input_csi_dispatch_sgr_rgb_do(ictx, p[0], p[i], p[i + 1], + p[i + 2]); break; case 5: - if (n < i + 2) + if (n < 3) break; - input_csi_dispatch_sgr_256_do(ictx, p[0], p[i + 1]); + input_csi_dispatch_sgr_256_do(ictx, p[0], p[2]); break; } }