Modification de la version non sécurisée

This commit is contained in:
Moncef STITI 2024-12-03 19:43:56 +01:00
parent 4d2a156e42
commit 8bddab0b57

@ -8,37 +8,35 @@
#define ACCOUNT_SIZE 16
#define MAX_NAME_LEN 10
#define MAX_BALANCE_LEN 5
#define FILENAME "../Data/accounts.db"
// Fonction pour lire un compte dans le fichier
// Fonction pour lire un compte dans le fichier avec verrouillage
void read_account(int fd, int index, char *name, int *balance) {
char buffer[ACCOUNT_SIZE];
lseek(fd, index * ACCOUNT_SIZE, SEEK_SET);
read(fd, buffer, ACCOUNT_SIZE);
sscanf(buffer, "%10s %d", name, balance);
sscanf(buffer, "%7s %d", name, balance);
}
// Fonction pour écrire un compte dans le fichier
// Fonction pour écrire un compte dans le fichier avec verrouillage
void write_account(int fd, int index, const char *name, int balance) {
char buffer[ACCOUNT_SIZE];
// Formater la chaîne avec un nom de 10 caractères et un solde de 5 caractères, espace rempli si nécessaire
snprintf(buffer, ACCOUNT_SIZE, "%-10s%5d", name, balance);
snprintf(buffer, ACCOUNT_SIZE, "%-7s%8d", name, balance);
// S'assurer que le buffer est exactement de taille ACCOUNT_SIZE
// Ajouter des espaces si nécessaire pour remplir la ligne
for (int i = strlen(buffer); i < ACCOUNT_SIZE - 1; i++) {
buffer[i] = ' ';
}
buffer[ACCOUNT_SIZE - 1] = '\n'; // Assurez-vous que la ligne est terminée correctement
// Positionner et écrire dans le fichier
lseek(fd, index * ACCOUNT_SIZE, SEEK_SET);
write(fd, buffer, ACCOUNT_SIZE);
}
// Fonction pour effectuer une transaction
// Fonction pour effectuer une transaction avec verrouillage
void perform_transaction(int fd, int account_count) {
int from_idx = rand() % account_count;
int to_idx = rand() % account_count;
@ -56,7 +54,7 @@ void perform_transaction(int fd, int account_count) {
// Calculer un montant aléatoire à transférer (max 20% du solde source)
int max_transfer = from_balance / 5;
if (max_transfer > 0) {
int transfer_amount = rand() % max_transfer;
int transfer_amount = rand() % max_transfer + 1;
// Effectuer la transaction
from_balance -= transfer_amount;
@ -82,7 +80,7 @@ void process_transactions(int transactions, int account_count) {
for (int i = 0; i < transactions; i++) {
perform_transaction(fd, account_count);
usleep(rand() % 100000); // Temporisation aléatoire
//usleep(rand() % 100000); // Temporisation aléatoire
}
close(fd);
@ -120,7 +118,8 @@ int main(int argc, char *argv[]) {
int num_processes = atoi(argv[1]);
int transactions_per_process = atoi(argv[2]);
srand(time(NULL));
unsigned int seed = getpid() ^ time(NULL);
int random_value = rand_r(&seed);
// Calcul du solde total initial
int initial_balance = calculate_total_balance();