head 1.3; access; symbols pkgsrc-2026Q1:1.3.0.84 pkgsrc-2026Q1-base:1.3 pkgsrc-2025Q4:1.3.0.82 pkgsrc-2025Q4-base:1.3 pkgsrc-2025Q3:1.3.0.80 pkgsrc-2025Q3-base:1.3 pkgsrc-2025Q2:1.3.0.78 pkgsrc-2025Q2-base:1.3 pkgsrc-2025Q1:1.3.0.76 pkgsrc-2025Q1-base:1.3 pkgsrc-2024Q4:1.3.0.74 pkgsrc-2024Q4-base:1.3 pkgsrc-2024Q3:1.3.0.72 pkgsrc-2024Q3-base:1.3 pkgsrc-2024Q2:1.3.0.70 pkgsrc-2024Q2-base:1.3 pkgsrc-2024Q1:1.3.0.68 pkgsrc-2024Q1-base:1.3 pkgsrc-2023Q4:1.3.0.66 pkgsrc-2023Q4-base:1.3 pkgsrc-2023Q3:1.3.0.64 pkgsrc-2023Q3-base:1.3 pkgsrc-2023Q2:1.3.0.62 pkgsrc-2023Q2-base:1.3 pkgsrc-2023Q1:1.3.0.60 pkgsrc-2023Q1-base:1.3 pkgsrc-2022Q4:1.3.0.58 pkgsrc-2022Q4-base:1.3 pkgsrc-2022Q3:1.3.0.56 pkgsrc-2022Q3-base:1.3 pkgsrc-2022Q2:1.3.0.54 pkgsrc-2022Q2-base:1.3 pkgsrc-2022Q1:1.3.0.52 pkgsrc-2022Q1-base:1.3 pkgsrc-2021Q4:1.3.0.50 pkgsrc-2021Q4-base:1.3 pkgsrc-2021Q3:1.3.0.48 pkgsrc-2021Q3-base:1.3 pkgsrc-2021Q2:1.3.0.46 pkgsrc-2021Q2-base:1.3 pkgsrc-2021Q1:1.3.0.44 pkgsrc-2021Q1-base:1.3 pkgsrc-2020Q4:1.3.0.42 pkgsrc-2020Q4-base:1.3 pkgsrc-2020Q3:1.3.0.40 pkgsrc-2020Q3-base:1.3 pkgsrc-2020Q2:1.3.0.36 pkgsrc-2020Q2-base:1.3 pkgsrc-2020Q1:1.3.0.16 pkgsrc-2020Q1-base:1.3 pkgsrc-2019Q4:1.3.0.38 pkgsrc-2019Q4-base:1.3 pkgsrc-2019Q3:1.3.0.34 pkgsrc-2019Q3-base:1.3 pkgsrc-2019Q2:1.3.0.32 pkgsrc-2019Q2-base:1.3 pkgsrc-2019Q1:1.3.0.30 pkgsrc-2019Q1-base:1.3 pkgsrc-2018Q4:1.3.0.28 pkgsrc-2018Q4-base:1.3 pkgsrc-2018Q3:1.3.0.26 pkgsrc-2018Q3-base:1.3 pkgsrc-2018Q2:1.3.0.24 pkgsrc-2018Q2-base:1.3 pkgsrc-2018Q1:1.3.0.22 pkgsrc-2018Q1-base:1.3 pkgsrc-2017Q4:1.3.0.20 pkgsrc-2017Q4-base:1.3 pkgsrc-2017Q3:1.3.0.18 pkgsrc-2017Q3-base:1.3 pkgsrc-2017Q2:1.3.0.14 pkgsrc-2017Q2-base:1.3 pkgsrc-2017Q1:1.3.0.12 pkgsrc-2017Q1-base:1.3 pkgsrc-2016Q4:1.3.0.10 pkgsrc-2016Q4-base:1.3 pkgsrc-2016Q3:1.3.0.8 pkgsrc-2016Q3-base:1.3 pkgsrc-2016Q2:1.3.0.6 pkgsrc-2016Q2-base:1.3 pkgsrc-2016Q1:1.3.0.4 pkgsrc-2016Q1-base:1.3 pkgsrc-2015Q4:1.3.0.2 pkgsrc-2015Q4-base:1.3 pkgsrc-2015Q3:1.2.0.26 pkgsrc-2015Q3-base:1.2 pkgsrc-2015Q2:1.2.0.24 pkgsrc-2015Q2-base:1.2 pkgsrc-2015Q1:1.2.0.22 pkgsrc-2015Q1-base:1.2 pkgsrc-2014Q4:1.2.0.20 pkgsrc-2014Q4-base:1.2 pkgsrc-2014Q3:1.2.0.18 pkgsrc-2014Q3-base:1.2 pkgsrc-2014Q2:1.2.0.16 pkgsrc-2014Q2-base:1.2 pkgsrc-2014Q1:1.2.0.14 pkgsrc-2014Q1-base:1.2 pkgsrc-2013Q4:1.2.0.12 pkgsrc-2013Q4-base:1.2 pkgsrc-2013Q3:1.2.0.10 pkgsrc-2013Q3-base:1.2 pkgsrc-2013Q2:1.2.0.8 pkgsrc-2013Q2-base:1.2 pkgsrc-2013Q1:1.2.0.6 pkgsrc-2013Q1-base:1.2 pkgsrc-2012Q4:1.2.0.4 pkgsrc-2012Q4-base:1.2 pkgsrc-2012Q3:1.2.0.2 pkgsrc-2012Q3-base:1.2; locks; strict; comment @# @; 1.3 date 2015.10.07.23.19.08; author joerg; state Exp; branches; next 1.2; commitid eUqiujqMYhUAseEy; 1.2 date 2012.09.16.04.33.43; author dholland; state Exp; branches; next 1.1; 1.1 date 2012.09.16.03.21.47; author dholland; state Exp; branches; next ; desc @@ 1.3 log @Unbreak build on NetBSD current. @ text @$NetBSD: patch-bitstir_c,v 1.2 2012/09/16 04:33:43 dholland Exp $ Get gMaxEntropy and gCriticalEntropyThreshold from the kernel in the approved way, including at tls@@'s suggestion a fallback in case the reported threshold is 0. Also, fix a couple C usage issues. --- bitstir.c.orig 2015-09-27 17:10:03.000000000 +0000 +++ bitstir.c @@@@ -40,11 +40,18 @@@@ #include #include #include +#include +#include + +#include +#if __NetBSD_Version__ >= 799001000 +# include +#endif const char gRequiredOS[] = "NetBSD"; -const char gRandomDevice[] = "/dev/random"; -const long gMaxEntropy = RND_POOLBITS; -const long gCriticalEntropyThreshold = RND_POOLBITS / 10; +const char gRandomDevice[] = _PATH_RANDOM; +long gMaxEntropy; +long gCriticalEntropyThreshold; const long gMaxPathLen = PATH_MAX; long verbose_flag = 0; @@@@ -76,8 +83,8 @@@@ struct search_dir *current_search_dir = void parse_command_line_args (int argc, char *argv[]); long entropy_available(const char *device); -void restore_entropy(); -void restore_entropy_one_shot(); +void restore_entropy(void); +void restore_entropy_one_shot(void); void nullify_fd (int fd); void exec_find (const char *directory); void kill_process (pid_t pid); @@@@ -88,9 +95,10 @@@@ void log_err (char *fmt, ... ); void check_os (); int is_directory (const char *path); void setup_find_executable (); +void get_random_stats(void); void print_help (); -main(int argc, char *argv[]) +int main(int argc, char *argv[]) { if( argc == 1 ) { fprintf(stderr, "usage: %s [switches] --search-dir dir [--search-dir dir ...]\n", @@@@ -120,6 +128,7 @@@@ main(int argc, char *argv[]) check_os(); } setup_find_executable(); + get_random_stats(); if( root_search_dir == (struct search_dir *) NULL ) { log_err("No directory specified with --search-dir. Exiting.\n"); @@@@ -578,6 +587,31 @@@@ void setup_find_executable () } } +void get_random_stats(void) +{ + rndpoolstat_t rs; + int fd; + + fd = open(_PATH_URANDOM, O_RDONLY, 0644); + if (fd < 0) { + log_err("Could not open %s: %s\n", _PATH_URANDOM, strerror(errno)); + exit(1); + } + + if (ioctl(fd, RNDGETPOOLSTAT, &rs) < 0) { + log_err("RNDGETPOOLSTAT failed: %s\n", strerror(errno)); + exit(1); + } + + close(fd); + + gMaxEntropy = rs.maxentropy; + gCriticalEntropyThreshold = rs.threshold; + if (gCriticalEntropyThreshold < 2 * SHA1_DIGEST_LENGTH) { + gCriticalEntropyThreshold = 2 * SHA1_DIGEST_LENGTH; + } +} + void print_help() { fprintf(stderr, "Basic help message - see bitstir(8) for more detail:\n"); @ 1.2 log @Fix this properly; retrieve the random pool size the same way rndctl(8) does. Thanks to tls@@ for pointers. PKGREVISION -> 2. @ text @d1 1 a1 1 $NetBSD: patch-bitstir_c,v 1.1 2012/09/16 03:21:47 dholland Exp $ d9 3 a11 3 --- bitstir.c~ 2003-08-27 16:58:51.000000000 -0400 +++ bitstir.c 2012-09-16 00:27:33.000000000 -0400 @@@@ -40,11 +40,13 @@@@ d17 5 a24 1 +const char gRandomDevice[] = _PATH_RANDOM; d27 1 d33 1 a33 1 @@@@ -76,8 +77,8 @@@@ d44 1 a44 1 @@@@ -88,9 +89,10 @@@@ d56 1 a56 1 @@@@ -120,6 +122,7 @@@@ d64 1 a64 1 @@@@ -578,6 +582,31 @@@@ @ 1.1 log @Deploy a gross hack to make this buildable on -current and maybe -6. XXX: This should be reverted and done a different way, or maybe not at all; XXX: this package should probably be reviewed for soundness. @ text @d1 1 a1 1 $NetBSD$ d3 3 a5 1 Deploy a gross hack to make RND_POOLBITS available on recent NetBSD. d7 6 a12 3 --- bitstir.c~ 2003-08-27 20:58:51.000000000 +0000 +++ bitstir.c @@@@ -41,6 +41,13 @@@@ d15 41 d57 21 a77 6 +/* Ugh. Use this only if required and only if appropriate. */ +#ifdef __NetBSD__ +#ifndef RND_POOLBITS +#include "hack.h" +#endif +#endif d79 12 a90 3 const char gRequiredOS[] = "NetBSD"; const char gRandomDevice[] = "/dev/random"; const long gMaxEntropy = RND_POOLBITS; @