Deadlock And Lock Inconsistency High

We observed that your code contains either incorrect lock ordering, nested locking, which can potentially lead to a deadlock or incorrectly handles locking by not following proper conventions, potentially introducing vulnerabilities through lock consistency violations. To mitigate this ensure correct lock ordering, initialize the mutex with recursive attributes and Follow standardized locking conventions.

Detector ID
c/deadlock-and-lock-inconsistency@v1.0
Category
Common Weakness Enumeration (CWE) external icon
Tags
-

Noncompliant example

1#include <limits.h>
2#include <pthread.h>
3#include <stdio.h>
4
5void deadlockAndLockInconsistencyNonComplaint() {
6    pthread_mutex_init(&lock, NULL);
7    // Noncompliant: Lock never acquired
8    pthread_mutex_unlock(&lock); 
9}

Compliant example

1#include <limits.h>
2#include <pthread.h>
3#include <stdio.h>
4
5pthread_mutex_t lock;
6
7void deadlockAndLockInconsistencyCompliant()
8{
9    // Compliant: This code dose not contains a potential deadlock or violate lock consistency due to incorrect lock ordering or nested locking.
10    pthread_mutex_init(&lock, NULL); // initialize mutex first
11    pthread_mutex_lock(&lock); // okay to lock now
12    // critical section
13    pthread_mutex_unlock(&lock);
14}