]> Kevux Git Server - fll/commitdiff
Security: Controller program is not initializing the alert mutex lock.
authorKevin Day <thekevinday@gmail.com>
Tue, 29 Mar 2022 23:23:25 +0000 (18:23 -0500)
committerKevin Day <thekevinday@gmail.com>
Tue, 29 Mar 2022 23:23:25 +0000 (18:23 -0500)
This results in undefined behavior and a possible segfault.

This appears to be an oversight.

Also remove stale commented out code and slightly improve the wording in a comment.

level_3/controller/c/lock/private-lock.c
level_3/controller/c/thread/private-thread_process.c

index 110dcc747ee90e412c7b1fadb76813962adeba10..3f9489a27cc0f1253bd6ad3618b0712d84c01517 100644 (file)
@@ -14,9 +14,6 @@ extern "C" {
     f_status_t status = f_thread_mutex_create(0, &lock->alert);
     if (F_status_is_error(status)) return status;
 
-    //status = f_thread_mutex_create(0, &lock->listen);
-    //if (F_status_is_error(status)) return status;
-
     status = f_thread_mutex_create(0, &lock->print);
     if (F_status_is_error(status)) return status;
 
@@ -26,11 +23,11 @@ extern "C" {
     status = f_thread_lock_create(0, &lock->rule);
     if (F_status_is_error(status)) return status;
 
-    status = f_thread_condition_create(0, &lock->alert_condition);
+    status = f_thread_lock_create(0, &lock->alert);
     if (F_status_is_error(status)) return status;
 
-    //status = f_thread_condition_create(0, &lock->listen_condition);
-    //if (F_status_is_error(status)) return status;
+    status = f_thread_condition_create(0, &lock->alert_condition);
+    if (F_status_is_error(status)) return status;
 
     return F_none;
   }
index 5ce3c88c024ced9eea5ee89025ab34d6e77214d2..e57446cbb1abbfa2587e4219e243e2b041535782 100644 (file)
@@ -50,7 +50,7 @@ extern "C" {
       return;
     }
 
-    // Use the alert lock to toggle enabled (being used as if it were a write like and signal lock).
+    // Use the alert lock to toggle enabled (using it as if it is a write like and a signal lock).
     f_status_t status = f_thread_mutex_lock(&global.thread->lock.alert);
 
     if (F_status_is_error(status)) {