X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Ffsck.c;h=3804f2d8364b2c198f963cd76c78672945fdddaa;hb=refs%2Fheads%2F1.1;hp=c1247e1782c0838613711dab8d8dc8d97387956c;hpb=3a149f7521dfff67e6a790c1a830afc649ae083e;p=tinc diff --git a/src/fsck.c b/src/fsck.c index c1247e17..b44b7759 100644 --- a/src/fsck.c +++ b/src/fsck.c @@ -1,6 +1,6 @@ /* fsck.c -- Check the configuration files for problems - Copyright (C) 2014-2021 Guus Sliepen + Copyright (C) 2014-2022 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -64,6 +64,7 @@ again: goto again; } +static void print_tinc_cmd(const char *format, ...) ATTR_FORMAT(printf, 1, 2); static void print_tinc_cmd(const char *format, ...) { if(confbasegiven) { fprintf(stderr, "%s -c %s ", exe_name, confbase); @@ -141,8 +142,14 @@ static void check_conffile(const char *nodename, bool server) { ++total_vars; } - int count[total_vars]; - memset(count, 0, sizeof(count)); + if(!total_vars) { + splay_empty_tree(&config); + return; + } + + const size_t countlen = total_vars * sizeof(int); + int *count = alloca(countlen); + memset(count, 0, countlen); for splay_each(config_t, conf, &config) { int var_type = 0; @@ -184,10 +191,10 @@ static void check_conffile(const char *nodename, bool server) { splay_empty_tree(&config); } -#ifdef HAVE_MINGW +#ifdef HAVE_WINDOWS typedef int uid_t; -static uid_t getuid() { +static uid_t getuid(void) { return 0; } @@ -218,9 +225,9 @@ static void check_key_file_mode(const char *fname) { } } } -#endif // HAVE_MINGW +#endif // HAVE_WINDOWS -static char *read_node_name() { +static char *read_node_name(void) { if(access(tinc_conf, R_OK) == 0) { return get_my_name(true); } @@ -329,7 +336,7 @@ static bool test_rsa_keypair(rsa_t *rsa_priv, rsa_t *rsa_pub, const char *host_f uint8_t *encrypted = xzalloc(len); uint8_t *decrypted = xzalloc(len); - randomize(plaintext, len); + prng_randomize(plaintext, len); plaintext[0] &= 0x7f; if(rsa_public_encrypt(rsa_pub, plaintext, len, encrypted)) { @@ -438,7 +445,7 @@ static bool check_config_mode(const char *fname) { return true; } -static bool check_script_confdir() { +static bool check_script_confdir(void) { char fname[PATH_MAX]; DIR *dir = opendir(confbase); @@ -535,14 +542,11 @@ static bool check_public_keys(splay_tree_t *config, const char *name, rsa_t *rsa fprintf(stderr, "WARNING: cannot read %s\n", host_file); } - ecdsa_t *ec_pub = NULL; - read_ecdsa_public_key(&ec_pub, &config, name); + ecdsa_t *ec_pub = read_ecdsa_public_key(&config, name); bool success = true; #ifndef DISABLE_LEGACY - rsa_t *rsa_pub = NULL; - read_rsa_public_key(&rsa_pub, config, name); - + rsa_t *rsa_pub = read_rsa_public_key(config, name); success = check_rsa_pubkey(rsa_priv, rsa_pub, host_file); rsa_free(rsa_pub); #endif @@ -616,7 +620,7 @@ static void check_config_variables(const char *host_dir) { } } -static bool check_scripts_and_configs() { +static bool check_scripts_and_configs(void) { // Check whether scripts are executable. if(!check_script_confdir()) { return false;