setup.c (1180B)
1 #include "setup.h" 2 3 #include <stdlib.h> 4 5 struct detector_queue_entry **detector_queue; 6 int detector_queue_cap = 0; 7 int detector_queue_length = 0; 8 9 int detector_total = 0; 10 int detector_pass = 0; 11 int detector_fail = 0; 12 13 struct cve_context g_cve_ctx = {0}; 14 15 void detector_queue_append(const char *name, const char *alias, const char *remediation, 16 int (*fn)(struct cve_context *ctx)) { 17 // Initial queue initialize 18 if (!detector_queue_cap) { 19 detector_queue = malloc(sizeof(void *)); 20 detector_queue_cap = 1; 21 } 22 23 // Grow queue if needed 24 if ((detector_queue_length + 1) > detector_queue_cap) { 25 detector_queue_cap *= 2; 26 detector_queue = realloc(detector_queue, detector_queue_cap * sizeof(void *)); 27 } 28 29 // Build new entry 30 struct detector_queue_entry *entry = calloc(1, sizeof(struct detector_queue_entry)); 31 entry->handler = fn; 32 entry->name = name; 33 entry->alias = alias; 34 entry->remediation = remediation; 35 36 // Append fn to queue 37 detector_queue[detector_queue_length++] = entry; 38 }