From ccfccb7187a82ebe7fce3ca2bbc3eaa94a1b4ccd Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Tue, 4 Aug 2020 00:42:58 +0530 Subject: [PATCH] Detect odd hex symbols in NNN_COLORS --- src/nnn.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index e63d706b..1349f361 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -1589,7 +1589,6 @@ static bool initcurses(void *oldmask) if (colors || !getenv("NO_COLOR")) { uint *pcode; - char ch; bool ext = FALSE; start_color(); @@ -1622,16 +1621,17 @@ static bool initcurses(void *oldmask) if (colors && *colors) { if (ext) { - ch = *colors; - if (*++colors) { - *pcode = (16 * xchartohex(ch)) + xchartohex(*colors); - ++colors; - } else - *pcode = xchartohex(ch); - } else { + *pcode = xchartohex(*colors) << 4; + if (*++colors) + *pcode += xchartohex(*colors); + else { /* Each color code must be 2 hex symbols */ + exitcurses(); + fprintf(stderr, "NNN_COLORS!\n"); + return FALSE; + } + } else *pcode = (*colors < '0' || *colors > '7') ? 4 : *colors - '0'; - ++colors; - } + ++colors; } else *pcode = 4;