diff options
Diffstat (limited to 'src/coverity-model.c')
-rw-r--r-- | src/coverity-model.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/coverity-model.c b/src/coverity-model.c new file mode 100644 index 0000000000..3c38e4ae4d --- /dev/null +++ b/src/coverity-model.c @@ -0,0 +1,70 @@ +// 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 tv_dict_add(dict_T *const d, dictitem_T *const item) +{ + __coverity_escape__(item); +} |