]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Start using modeling for Coverity (#4853)
authorJames Jones <jejones3141@gmail.com>
Tue, 31 Jan 2023 15:03:30 +0000 (09:03 -0600)
committerGitHub <noreply@github.com>
Tue, 31 Jan 2023 15:03:30 +0000 (10:03 -0500)
This involves
* making the coverity workflow build the model
* adding model source file(s)

.github/workflows/coverity.yml
src/coverity-model/exfile.c [new file with mode: 0644]
src/coverity-model/pool.c [new file with mode: 0644]

index 04314fe193a64bf8d3604c9e40baa48467e79b06..cca531c0f43c2c63b94b01ca1852e116a34cae14 100644 (file)
@@ -66,6 +66,8 @@ jobs:
           export CC=clang
           export PATH=`pwd`/coverity_tool/bin:$PATH
           ./configure -with-rlm-python-bin=/usr/bin/python2.7
+          mkdir coverity_tool/config
+          cov-make-library --compiler-opt -I --compiler-opt src/freeradius-devel src/coverity-model/*
           cov-configure --template --compiler clang --comptype clangcc
           cov-build --dir cov-int make
 
diff --git a/src/coverity-model/exfile.c b/src/coverity-model/exfile.c
new file mode 100644 (file)
index 0000000..cbc447b
--- /dev/null
@@ -0,0 +1,27 @@
+#include <freeradius-devel/protocol/freeradius/freeradius.internal.h>
+#include <freeradius-devel/server/base.h>
+#include <freeradius-devel/server/exfile.h>
+
+#include <freeradius-devel/util/debug.h>
+#include <freeradius-devel/util/misc.h>
+#include <freeradius-devel/util/perm.h>
+#include <freeradius-devel/util/syserror.h>
+
+#include <sys/stat.h>
+#include <fcntl.h>
+
+int exfile_open(exfile_t *ef, char const *filename, mode_t permissions, off_t *offset)
+{
+    int result;
+
+    if (ef->locking && result > 0) __coverity_exclusive_lock_acquire__(ef->mutex);
+    return result;
+}
+
+int exfile_close(exfile_t *ef, int fd)
+{
+    int result;
+
+    if (ef->locking) __coverity_exclusive_lock_release__(ef->mutex);
+    return result;
+}
diff --git a/src/coverity-model/pool.c b/src/coverity-model/pool.c
new file mode 100644 (file)
index 0000000..e1713d7
--- /dev/null
@@ -0,0 +1,24 @@
+#include <freeradius-devel/server/base.h>
+#include <freeradius-devel/server/modpriv.h>
+#include <freeradius-devel/util/debug.h>
+
+#include <freeradius-devel/util/heap.h>
+#include <freeradius-devel/util/misc.h>
+
+#include <time.h>
+
+static fr_pool_connection_t *connection_spawn(fr_pool_t *pool, request_t *request, fr_time_t now, bool in_use, bool unlock)
+{
+       fr_pool_connection_t *result;
+       
+       if (result && !unlock)  __coverity_exclusive_lock_acquire__(pool->mutex);
+       return result;
+}
+
+static fr_pool_connection_t *connection_find(fr_pool_t *pool, void *conn)
+{
+       fr_pool_connection_t *result;
+       
+       if (result)  __coverity_exclusive_lock_acquire__(pool->mutex); 
+       return result;
+}