aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os_unix.c
diff options
context:
space:
mode:
authorEliseo Martínez <eliseomarmol@gmail.com>2015-01-27 15:51:52 +0100
committerJustin M. Keyes <justinkz@gmail.com>2015-02-02 01:21:58 -0500
commit323f0488c24044971adf5180fed9f41d91a87b13 (patch)
treed324054a596504f837a1cd170204ca2f760cc4db /src/nvim/os_unix.c
parentab86da74c4f81f492d493a42a1c3c26a273016a9 (diff)
downloadrneovim-323f0488c24044971adf5180fed9f41d91a87b13.tar.gz
rneovim-323f0488c24044971adf5180fed9f41d91a87b13.tar.bz2
rneovim-323f0488c24044971adf5180fed9f41d91a87b13.zip
coverity/15019: String not null terminated: FP.
Problem : String not null terminated @ 1165. Diagnostic : False positive. Rationale : Code below terminates string (with NUL or '\n'). Resolution : Add explanatory comment, and assert termination. Mark as Intentional at coverity's database.
Diffstat (limited to 'src/nvim/os_unix.c')
-rw-r--r--src/nvim/os_unix.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/nvim/os_unix.c b/src/nvim/os_unix.c
index f7b47f9569..15185aca49 100644
--- a/src/nvim/os_unix.c
+++ b/src/nvim/os_unix.c
@@ -13,6 +13,7 @@
* changed beyond recognition.
*/
+#include <assert.h>
#include <errno.h>
#include <inttypes.h>
#include <stdbool.h>
@@ -1162,6 +1163,8 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,
len = ftell(fd); /* get size of temp file */
fseek(fd, 0L, SEEK_SET);
buffer = xmalloc(len + 1);
+ // fread() doesn't terminate buffer with NUL;
+ // appropiate termination (not always NUL) is done below.
i = fread((char *)buffer, 1, len, fd);
fclose(fd);
os_remove((char *)tempname);
@@ -1174,8 +1177,6 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,
}
free(tempname);
-
-
/* file names are separated with Space */
if (shell_style == STYLE_ECHO) {
buffer[len] = '\n'; /* make sure the buffer ends in NL */
@@ -1235,6 +1236,8 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,
if (len)
++i; /* count last entry */
}
+ assert(buffer[len] == NUL || buffer[len] == '\n');
+
if (i == 0) {
/*
* Can happen when using /bin/sh and typing ":e $NO_SUCH_VAR^I".