diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-08-03 14:52:00 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2024-08-03 14:52:00 +0200 |
commit | 62d861741b92c45d05925d0685f3b06490011783 (patch) | |
tree | 9b6e8f044349ecdd349235e29d5f3cc4ff9ce8a0 | |
parent | 6228481b8e6341180a3bf2005178fc56d7e1c28b (diff) |
patch 9.1.0658: Coverity warns about dereferencing NULL pointer.v9.1.0658
Problem: Coverity warns about dereferencing NULL pointer.
Solution: Bail out if vim_strrchr() returns NULL.
(zeertzjq)
________________________________________________________________________________________________________
*** CID 1616019: (NULL_RETURNS)
/src/help.c: 834 in fix_help_buffer()
828 continue;
829 t2 = gettail(f2);
830 e2 = vim_strrchr(t2, '.');
831 if (e1 - f1 != e2 - f2
832 || fnamencmp(f1, f2, e1 - f1) != 0)
833 continue;
>>> CID 1616019: (NULL_RETURNS)
>>> Dereferencing a pointer that might be "NULL" "(char_u *)e2" when calling "vim_fnamecmp".
834 if (fnamecmp(e1, ".txt") == 0
835 && fnamecmp(e2, fname + 4) == 0)
836 // use .abx instead of .txt
837 VIM_CLEAR(fnames[i1]);
838 }
839 }
/src/help.c: 816 in fix_help_buffer()
810 // the same directory.
811 for (i1 = 0; i1 < fcount; ++i1)
812 {
813 f1 = fnames[i1];
814 t1 = gettail(f1);
815 e1 = vim_strrchr(t1, '.');
>>> CID 1616019: (NULL_RETURNS)
>>> Dereferencing a pointer that might be "NULL" "(char_u *)e1" when calling "vim_fnamecmp".
816 if (fnamecmp(e1, ".txt") != 0
817 && fnamecmp(e1, fname + 4) != 0)
818 {
819 // Not .txt and not .abx, remove it.
820 VIM_CLEAR(fnames[i1]);
821 continue;
closes: #15420
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r-- | src/help.c | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/help.c b/src/help.c index a792bf3cc3..1062362011 100644 --- a/src/help.c +++ b/src/help.c @@ -813,6 +813,8 @@ fix_help_buffer(void) f1 = fnames[i1]; t1 = gettail(f1); e1 = vim_strrchr(t1, '.'); + if (e1 == NULL) + continue; if (fnamecmp(e1, ".txt") != 0 && fnamecmp(e1, fname + 4) != 0) { @@ -828,6 +830,8 @@ fix_help_buffer(void) continue; t2 = gettail(f2); e2 = vim_strrchr(t2, '.'); + if (e2 == NULL) + continue; if (e1 - f1 != e2 - f2 || fnamencmp(f1, f2, e1 - f1) != 0) continue; diff --git a/src/version.c b/src/version.c index c36aa51197..a1e9e538b5 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 658, +/**/ 657, /**/ 656, |