From 9054993842860b86b2493ab629580946e6b9745a Mon Sep 17 00:00:00 2001 From: Devon Gardner Date: Wed, 11 Sep 2024 00:38:17 -0400 Subject: [PATCH] fix(coverity/509227): tui stop_driver_ti() avoid underflow Problem: write() can return -1 but is cast to unsigned type causing coverity to detect possible overflowed integer Solution: Perform check to ensure all negative values are captured rather than just -1 before casting to unsigned type --- src/nvim/tui/termkey/driver-ti.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nvim/tui/termkey/driver-ti.c b/src/nvim/tui/termkey/driver-ti.c index db72b8ed8d..745ee9902f 100644 --- a/src/nvim/tui/termkey/driver-ti.c +++ b/src/nvim/tui/termkey/driver-ti.c @@ -449,10 +449,11 @@ int stop_driver_ti(TermKey *tk, void *info) // Can't call putp or tputs because they suck and don't give us fd control len = strlen(stop_string); while (len) { - size_t written = (size_t)write(tk->fd, stop_string, (unsigned)len); - if (written == (size_t)-1) { + ssize_t result = write(tk->fd, stop_string, (unsigned)len); + if (result < 0) { return 0; } + size_t written = (size_t)result; stop_string += written; len -= written; }