From 9ccb556a21f1aa2c8d08052622aa4471b7acd6a3 Mon Sep 17 00:00:00 2001 From: Douglas Gilbert Date: Sun, 28 Mar 2021 00:58:36 +0000 Subject: sg_dd: setup conditional auto rule for getrandom() git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@883 6180dd3e-e324-4e3e-922d-17de1ae2f315 --- src/sg_dd.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/sg_dd.c') diff --git a/src/sg_dd.c b/src/sg_dd.c index 7d9b0edf..be90b7a0 100644 --- a/src/sg_dd.c +++ b/src/sg_dd.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #define __STDC_FORMAT_MACROS 1 #include @@ -50,7 +51,6 @@ #include #include #include -#include /* for getrandom() system call */ #ifndef major #include #endif @@ -60,6 +60,9 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif +#ifdef HAVE_GETRANDOM +#include /* for getrandom() system call */ +#endif #include "sg_lib.h" #include "sg_cmds_basic.h" #include "sg_cmds_extra.h" @@ -67,7 +70,7 @@ #include "sg_unaligned.h" #include "sg_pr2serr.h" -static const char * version_str = "6.24 20210321"; +static const char * version_str = "6.25 20210326"; #define ME "sg_dd: " @@ -2104,13 +2107,21 @@ main(int argc, char * argv[]) ccp = "<0xff bytes>"; cc2p = "ff"; } else if (iflag.random) { - ssize_t ssz; ccp = ""; cc2p = "random"; - ssz = getrandom(&seed, sizeof(seed), GRND_NONBLOCK); - if (ssz < (ssize_t)sizeof(seed)) - pr2serr("getrandom() failed, ret=%d\n", (int)ssz); +#ifdef HAVE_GETRANDOM + { + ssize_t ssz = getrandom(&seed, sizeof(seed), GRND_NONBLOCK); + + if (ssz < (ssize_t)sizeof(seed)) { + pr2serr("getrandom() failed, ret=%d\n", (int)ssz); + seed = (long)time(NULL); + } + } +#else + seed = (long)time(NULL); /* use seconds since epoch as proxy */ +#endif if (verbose > 1) pr2serr("seed=%ld\n", seed); srand48_r(seed, &drand); -- cgit v1.2.3