patch 8.0.0526: Coverity complains about possible negative value
Problem: Coverity complains about possible negative value.
Solution: Check return value of ftell() not to be negative.
diff --git a/src/os_unix.c b/src/os_unix.c
index c78e7bf..8ed3a67 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -6006,6 +6006,7 @@
{
int i;
size_t len;
+ long llen;
char_u *p;
int dir;
@@ -6292,9 +6293,13 @@
goto notfound;
}
fseek(fd, 0L, SEEK_END);
- len = ftell(fd); /* get size of temp file */
+ llen = ftell(fd); /* get size of temp file */
fseek(fd, 0L, SEEK_SET);
- buffer = alloc(len + 1);
+ if (llen < 0)
+ /* just in case ftell() would fail */
+ buffer = NULL;
+ else
+ buffer = alloc(llen + 1);
if (buffer == NULL)
{
/* out of memory */
@@ -6303,6 +6308,7 @@
fclose(fd);
return FAIL;
}
+ len = llen;
i = fread((char *)buffer, 1, len, fd);
fclose(fd);
mch_remove(tempname);