From 67b6aa29b0258ed39b46c8c37dd0ebd4a81a192d Mon Sep 17 00:00:00 2001 From: tyrolyean Date: Thu, 30 Apr 2020 02:27:01 +0200 Subject: [PATCH] CHanged device for entropy Signed-off-by: tyrolyean --- src/file.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/src/file.c b/src/file.c index 4e93629..99d45b6 100644 --- a/src/file.c +++ b/src/file.c @@ -26,6 +26,7 @@ #include #include #include +#include /* Generate a safe directory name to store ONE emails files into. This is * done to prevent someone from guessing the directory names. THe first part @@ -51,24 +52,12 @@ char* generate_safe_dirname(){ * to do so! */ int randie[3]; - int random_fd = open("/dev/random", O_RDONLY); - if (random_fd < 0){ - perror("Failed to open /dev/urandom"); + + if(getrandom(randie, sizeof(randie), 0) <= 0){ + perror("Failed to get random seed! Aborting"); return NULL; - }else{ - size_t randie_len = 0; - while (randie_len < sizeof(randie)){ - ssize_t result = read(random_fd, randie + randie_len, sizeof(randie) - randie_len); - if (result < 0){ - - perror("Failed to read from /dev/urandom"); - close(random_fd); - return NULL; - } - randie_len += result; - } - close(random_fd); } + size_t dir_len = TIME_LEN + 50 + strlen(directory); char * dir_id = malloc(dir_len+1); memset(dir_id, 0, dir_len+1 ); @@ -112,7 +101,7 @@ int base64_decode_file(const char* directory, const struct email_t* mail){ int decode_file(const char* directory, const char * message, size_t len, struct type_file_info_t finf){ - if(directory == NULL || message == NULL){ + if(directory == NULL || message == NULL || finf.name == NULL){ /* I don't know how I should call that file! */ return 0;