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];
            }