From 235eb296149ff1d16accadc37c52542b7f18ef2d Mon Sep 17 00:00:00 2001 From: "Sijmen J. Mulder" Date: Wed, 24 Jun 2020 01:05:42 +0200 Subject: [PATCH] Fix check when char is unsigned (#665) If char is unsigned (as on ARM) subtracting a larger number would result in a wrap around, not a negative value. src/nnn.c: In function 'readpipe': src/nnn.c:4325:11: warning: comparison is always false due to limited range of data type [-Wtype-limits] if (ctx < 0 || ctx > CTX_MAX) ^ --- src/nnn.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/nnn.c b/src/nnn.c index a8f82edb..ef20b13d 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -4326,9 +4326,11 @@ static void readpipe(int fd, char **path, char **lastname, char **lastdir) if (g_buf[0] == '+') ctx = (char)(get_free_ctx() + 1); + else if (g_buf[0] < '0') + return; else { ctx = g_buf[0] - '0'; - if (ctx < 0 || ctx > CTX_MAX) + if (ctx > CTX_MAX) return; }