aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/coverity-model.c71
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);
+}