aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Hall <followingthepath@gmail.com>2017-06-19 10:01:29 +1000
committerJustin M. Keyes <justinkz@gmail.com>2017-06-19 02:01:29 +0200
commit76ea97c809e50fccc5ca6615943ac6da1db1e030 (patch)
tree5c48057ef39185f27e8e6871d2d6282b209b85ef
parent26235bc050abece269737fd2b77bbc392d45ffc1 (diff)
downloadrneovim-76ea97c809e50fccc5ca6615943ac6da1db1e030.tar.gz
rneovim-76ea97c809e50fccc5ca6615943ac6da1db1e030.tar.bz2
rneovim-76ea97c809e50fccc5ca6615943ac6da1db1e030.zip
coverity/155506: fixing "dereference null after check" (#6862)
rbuffer_read_ptr may return a null if ptr == null && cnt == 0 && !out_data_decide_throttle(cnt) then we would have called out_data_append_to_screen(ptr, cnt, eof) which dereferences the null pointer.
-rw-r--r--src/nvim/os/shell.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c
index 8767287cf3..9d80a43718 100644
--- a/src/nvim/os/shell.c
+++ b/src/nvim/os/shell.c
@@ -496,8 +496,12 @@ static void out_data_cb(Stream *stream, RBuffer *buf, size_t count, void *data,
size_t cnt;
char *ptr = rbuffer_read_ptr(buf, &cnt);
- if (ptr != NULL && cnt > 0
- && out_data_decide_throttle(cnt)) { // Skip output above a threshold.
+ if (ptr == NULL || cnt == 0) {
+ // Nothing to read;
+ return;
+ }
+
+ if (out_data_decide_throttle(cnt)) { // Skip output above a threshold.
// Save the skipped output. If it is the final chunk, we display it later.
out_data_ring(ptr, cnt);
} else {