From d5157c15b03fb8ca6067cacac64c6872b23c191c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 18 Jul 2019 14:25:15 +0200 Subject: [PATCH] csi: color index is an 8-bit unsigned value This fixes an issue where a large 8-bit value was signed extended into a large 64-bit value. --- csi.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/csi.c b/csi.c index 4e74a1dc..c329a0ea 100644 --- a/csi.c +++ b/csi.c @@ -194,9 +194,8 @@ csi_sgr(struct terminal *term) if (term->vt.params.idx - i - 1 >= 2 && term->vt.params.v[i + 1].value == 5) { - size_t idx = term->vt.params.v[i + 2].value; - if (idx < 5) - term->vt.attrs.foreground = 1 << 31 | colors256[idx]; + uint8_t idx = term->vt.params.v[i + 2].value; + term->vt.attrs.foreground = 1 << 31 | colors256[idx]; i += 2; } @@ -257,9 +256,8 @@ csi_sgr(struct terminal *term) if (term->vt.params.idx - i - 1 >= 2 && term->vt.params.v[i + 1].value == 5) { - size_t idx = term->vt.params.v[i + 2].value; - if (idx < 256) - term->vt.attrs.background = 1 << 31 | colors256[idx]; + uint8_t idx = term->vt.params.v[i + 2].value; + term->vt.attrs.background = 1 << 31 | colors256[idx]; i += 2; }