Browse Source

Fix a bug where random() always returns 0 when srandom() is seeded

with 0.  Use 1 and not 0 as the first element of the state array,
similar to what glibc does.  OK nicm@
OPENBSD_5_2
millert 12 years ago
parent
commit
4f8263876c
1 changed files with 3 additions and 2 deletions
  1. +3
    -2
      src/lib/libc/stdlib/random.c

+ 3
- 2
src/lib/libc/stdlib/random.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: random.c,v 1.15 2005/11/30 07:51:02 otto Exp $ */
/* $OpenBSD: random.c,v 1.16 2012/03/21 12:36:49 millert Exp $ */
/*
* Copyright (c) 1983 Regents of the University of California.
* All rights reserved.
@ -196,7 +196,8 @@ srandom(unsigned int x)
if (rand_type == TYPE_0)
state[0] = x;
else {
state[0] = x;
/* A seed of 0 would result in state[] always being zero. */
state[0] = x ? x : 1;
for (i = 1; i < rand_deg; i++) {
/*
* Implement the following, without overflowing 31 bits:


Loading…
Cancel
Save