cleaning
authorMazet Laurent <laurent.mazet@thalesgroup.com>
Wed, 7 May 2025 14:42:56 +0000 (16:42 +0200)
committerMazet Laurent <laurent.mazet@thalesgroup.com>
Wed, 7 May 2025 16:23:33 +0000 (18:23 +0200)
cryptomod.c
function.c
task.c

index de3551a3616fc77af8091352d9b0284138909358..9f47b51510c02d1db480692c9090bea2bc4e45dc 100644 (file)
@@ -316,7 +316,7 @@ int main_thread (sub_task_t *s, int id)
             rc = dissociate_channel_func (&pdu_channel, &pdu_status);
             break;
         case bypass_func_e:
-            rc = bypass_func (&pdu_raw_data, &pdu_raw_data);
+            //rc = bypass_func (&pdu_raw_data, &pdu_raw_data);
             rc = 0;
             break;
         case random_func_e:
@@ -437,19 +437,27 @@ int main_thread (sub_task_t *s, int id)
     return 0;
 }
 
+void clean_all (int all)
+{
+    kill_all_subtasks (task, SIGTERM);
+    for (int i = 0; i < NBSERVICES * 2; i++) {
+        MOREP_Close (i);
+    }
+    clean_crypto_memory ();
+    if (all) {
+        if ((logfile) && (logfile != stdout)) {
+            fclose (logfile);
+        }
+    }
+}
+
 /* signal handler */
 void sig_handler (int sig)
 {
     switch (sig) {
     case SIGINT:
     case SIGTERM:
-        kill_all_subtasks (task, SIGTERM);
-        for (int i = 0; i < NBSERVICES * 2; i++) {
-            MOREP_Close (i);
-        }
-        if ((logfile) && (logfile != stdout)) {
-            fclose (logfile);
-        }
+        clean_all (1);
         exit (0);
         break;
     }
@@ -563,7 +571,6 @@ int main (int argc, char **argv)
             } else {
                 VERBOSE (crypto, WARNING, PRINTF ("can't find service '%s'\n", servname));
             }
-            mode = -1;
         }
     }
 
@@ -591,11 +598,7 @@ int main (int argc, char **argv)
             break;
         case booting_e :
             VERBOSE (crypto, DEBUG, PRINTF ("Rebooting\n"));
-            kill_all_subtasks (task, SIGTERM);
-            for (int i = 0; i < NBSERVICES * 2; i++) {
-                MOREP_Close (i);
-            }
-            clean_crypto_memory ();
+            clean_all (0);
             state = idle_e;
             break;
         case shutdowning_e:
@@ -609,13 +612,7 @@ int main (int argc, char **argv)
     }
 
     /* cleaning */
-    kill_all_subtasks (task, SIGTERM);
-    for (int i = 0; i < NBSERVICES * 2; i++) {
-        MOREP_Close (i);
-    }
-    if ((logfile) && (logfile != stdout)) {
-        fclose (logfile);
-    }
+    clean_all (1);
 
     return 0;
 }
index 900cdc1bfc41da2b4682f188f033e4534d802a3c..3575d424e3843f532a9c46151030fc295076521d 100644 (file)
@@ -76,9 +76,7 @@ int encrypt_func (CLEAR_DATA_t *in, ENCRYPTED_DATA_t *out)
         uint8_t *key = keys[kid];
         int klen = key_lengths[kid];
         for (int i = 0; i < out->data_len; i++) {
-            int a =  out->data[i];
             out->data[i] = (out->data[i] ^ key[i % klen]) & 0xff;
-            if (i < 8) printf ("%02x%02x%02x%c", a, key[i % klen], out->data[i], (i != 7) ? '|' : '\n');
         }
     } else {
         VERBOSE (crypto, WARNING, PRINTF ("no key associated to channel %d (%d))\n", cid, kid));
diff --git a/task.c b/task.c
index e84de0474770c2326b4aa2c927f9783f45673403..13317063c111060d4c4048c74566b7a9f3d3363e 100644 (file)
--- a/task.c
+++ b/task.c
@@ -345,6 +345,8 @@ void kill_all_subtasks (task_t *t, int sig)
         }
     }
     free (t->sub_task_list);
+    free (t->cpu_list);
+    free (t->name);
     free (t);
 }