mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
awk: Use random(3) instead of rand(3)
While none of them is considered even near to cryptographic level, random(3) is a better random generator than rand(3). Use random(3) for awk as is done in other systems. Thanks to Chenguang Li for discussing this in the lists and submitting the patch upstream. PR: 193147 MFC after: 5 weeks
This commit is contained in:
parent
749cd43178
commit
a4b2ac79e4
3 changed files with 7 additions and 5 deletions
|
|
@ -208,7 +208,7 @@ or of
|
|||
if no argument.
|
||||
.TP
|
||||
.B rand
|
||||
random number on (0,1)
|
||||
random number on [0,1)
|
||||
.TP
|
||||
.B srand
|
||||
sets seed for
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ int main(int argc, char *argv[])
|
|||
signal(SIGFPE, fpecatch);
|
||||
|
||||
srand_seed = 1;
|
||||
srand(srand_seed);
|
||||
srandom((unsigned long) srand_seed);
|
||||
|
||||
yyin = NULL;
|
||||
symtab = makesymtab(NSYMTAB/NSYMTAB);
|
||||
|
|
|
|||
|
|
@ -1521,8 +1521,10 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis
|
|||
u = (Awkfloat) system(getsval(x)) / 256; /* 256 is unix-dep */
|
||||
break;
|
||||
case FRAND:
|
||||
/* in principle, rand() returns something in 0..RAND_MAX */
|
||||
u = (Awkfloat) (rand() % RAND_MAX) / RAND_MAX;
|
||||
/* random() returns numbers in [0..2^31-1]
|
||||
* in order to get a number in [0, 1), divide it by 2^31
|
||||
*/
|
||||
u = (Awkfloat) random() / (0x7fffffffL + 0x1UL);
|
||||
break;
|
||||
case FSRAND:
|
||||
if (isrec(x)) /* no argument provided */
|
||||
|
|
@ -1530,7 +1532,7 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis
|
|||
else
|
||||
u = getfval(x);
|
||||
tmp = u;
|
||||
srand((unsigned int) u);
|
||||
srandom((unsigned long) u);
|
||||
u = srand_seed;
|
||||
srand_seed = tmp;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue