diff options
author | James McCoy <jamessan@jamessan.com> | 2017-03-05 09:17:50 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-05 09:17:50 -0500 |
commit | a314f6d79fc3ded8d7b82284257b97f7f375b73f (patch) | |
tree | 7f3517768bde933fb7b75d83779c14389595cbda /src | |
parent | 6a56ac2ecad89c5b00d5d4033f5570f417ee73d5 (diff) | |
parent | b0fb1f45404ad736a9a7237d408888e05d5fa919 (diff) | |
download | rneovim-a314f6d79fc3ded8d7b82284257b97f7f375b73f.tar.gz rneovim-a314f6d79fc3ded8d7b82284257b97f7f375b73f.tar.bz2 rneovim-a314f6d79fc3ded8d7b82284257b97f7f375b73f.zip |
Merge pull request #6215 from jamessan/coverity-model
ci: Add Coverity modeling
Diffstat (limited to 'src')
-rw-r--r-- | src/coverity-model.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/coverity-model.c b/src/coverity-model.c new file mode 100644 index 0000000000..e01afcf2dd --- /dev/null +++ b/src/coverity-model.c @@ -0,0 +1,71 @@ +/* Coverity Scan model + * + * This is a modeling file for Coverity Scan. Modeling helps to avoid false + * positives. + * + * - A model file can't import any header files. + * - Therefore only some built-in primitives like int, char and void are + * available but not wchar_t, NULL etc. + * - Modeling doesn't need full structs and typedefs. Rudimentary structs + * and similar types are sufficient. + * - An uninitialized local pointer is not an error. It signifies that the + * variable could be either NULL or have some data. + * + * Coverity Scan doesn't pick up modifications automatically. The model file + * must be uploaded by an admin in the analysis settings of + * http://scan.coverity.com/projects/neovim-neovim + */ +/* + Issue 105985 + + Teach coverity that uv_pipe_open saves fd on success (0 return value) + and doesn't save it on failure (return value != 0). +*/ + +struct uv_pipe_s { + int something; +}; + +int uv_pipe_open(struct uv_pipe_s *handle, int fd) +{ + int result; + if (result == 0) { + __coverity_escape__(fd); + } + return result; +} + +/* + Issue 2422 + + Teach coverity about jemalloc functions, so that it understands + they are equivalent to malloc ones. +*/ + +void *je_malloc(size_t size) { + return __coverity_alloc__(size); +} + +void je_free(void *ptr) { + __coverity_free__(ptr); +} + +void *je_calloc(size_t count, size_t size) { + return je_malloc(count * size); +} + +void *je_realloc(void *ptr, size_t size) { + je_free(ptr); + return je_malloc(size); +} + +/* + * Hint Coverity that adding item to d avoids losing track + * of the memory allocated for item. + */ +typedef struct {} dictitem_T; +typedef struct {} dict_T; +int dict_add(dict_T *d, dictitem_T *item) +{ + __coverity_escape__(item); +} |