diff options
author | Andreas Jaeger <aj@suse.de> | 2013-04-29 21:02:16 +0200 |
---|---|---|
committer | Andreas Jaeger <aj@suse.de> | 2013-04-29 21:02:16 +0200 |
commit | 9ce3b2cbd245abedc6cff147a1b91566e340edb1 (patch) | |
tree | 7f87cd0284daa1116fded62b7e1c66f063d9c64e /stdlib/random.c | |
parent | b1a36ceb3bb0c8de45fc2024e57529e02ee3adef (diff) | |
download | glibc-9ce3b2cbd245abedc6cff147a1b91566e340edb1.tar.gz glibc-9ce3b2cbd245abedc6cff147a1b91566e340edb1.tar.xz glibc-9ce3b2cbd245abedc6cff147a1b91566e340edb1.zip |
BZ#15380: Fix initstate error return
[BZ #15380] * stdlib/random.c (__initstate): Return NULL if __initstate fails.
Diffstat (limited to 'stdlib/random.c')
-rw-r--r-- | stdlib/random.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/stdlib/random.c b/stdlib/random.c index 3ed610dd9c..967dec3539 100644 --- a/stdlib/random.c +++ b/stdlib/random.c @@ -234,16 +234,17 @@ __initstate (seed, arg_state, n) size_t n; { int32_t *ostate; + int ret; __libc_lock_lock (lock); ostate = &unsafe_state.state[-1]; - __initstate_r (seed, arg_state, n, &unsafe_state); + ret = __initstate_r (seed, arg_state, n, &unsafe_state); __libc_lock_unlock (lock); - return (char *) ostate; + return ret == -1 ? NULL : (char *) ostate; } weak_alias (__initstate, initstate) |