From: Mazet Laurent Date: Wed, 7 May 2025 14:42:56 +0000 (+0200) Subject: cleaning X-Git-Tag: v1.0~29^2~4 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=55b59e1612563648936c4bf60a82cd8abba758b1;p=morep.git cleaning --- diff --git a/cryptomod.c b/cryptomod.c index de3551a..9f47b51 100644 --- a/cryptomod.c +++ b/cryptomod.c @@ -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; } diff --git a/function.c b/function.c index 900cdc1..3575d42 100644 --- a/function.c +++ b/function.c @@ -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 e84de04..1331706 100644 --- 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); }