OpenBSDify: Replace unsafe string ops and deterministic rnd calls - fiche - A pastebin adjusted for gopher use
(HTM) git clone git://vernunftzentrum.de/fiche.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 4dd5c05ae35d2f062460e01f16f7162d490d6cbd
(DIR) parent df71761d42bc036bfba5882af9ab0aa4863b6adf
(HTM) Author: Christian Kellermann <ckeen@pestilenz.org>
Date: Fri, 2 Mar 2018 23:12:47 +0100
OpenBSDify: Replace unsafe string ops and deterministic rnd calls
Diffstat:
fiche.c | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
---
(DIR) diff --git a/fiche.c b/fiche.c
@@ -181,11 +181,6 @@ static void log_entry(const Fiche_Settings *s, const char *ip,
static void get_date(char *buf);
-/**
- * @brief Time seed
- */
-unsigned int seed;
-
/******************************************************************************
* Public fiche functions
*/
@@ -224,8 +219,6 @@ void fiche_init(Fiche_Settings *settings) {
int fiche_run(Fiche_Settings settings) {
- seed = time(NULL);
-
// Check if log file is writable (if set)
if ( settings.log_file_path ) {
@@ -410,9 +403,9 @@ static int set_domain_name(Fiche_Settings *settings) {
return -1;
}
- strcpy(b, settings->prefix);
- strcat(b, "://");
- strcat(b, settings->domain);
+ strlcpy(b, settings->prefix, len);
+ strlcat(b, "://", len);
+ strlcat(b, settings->domain, len);
settings->domain = b;
@@ -581,7 +574,7 @@ static void *handle_connection(void *args) {
hostname, sizeof(hostname), NULL, 0, 0) != 0 ) {
// Couldn't resolve a hostname
- strcpy(hostname, "n/a");
+ strlcpy(hostname, "n/a", 1024);
}
// Print status on this connection
@@ -738,7 +731,7 @@ static void generate_slug(char **output, uint8_t length, uint8_t extra_length) {
// Take n-th symbol from symbol table and use it for slug generation
for (int i = 0; i < length + extra_length; i++) {
- int n = rand_r(&seed) % strlen(Fiche_Symbols);
+ int n = arc4random() % strlen(Fiche_Symbols);
*(output[0] + sizeof(char) * i) = Fiche_Symbols[n];
}