1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00
* stdlib/random_r.c (__setstate_r): Also compute end_ptr
	correctly.
	(__initstate_r): Set errno on error.
	(__random_r): Likewise.
	(__setstate_r): Correct offset when computing
	new rptr and fptr.  Test for arg_state being NULL.
	Reported by Michael Fischer <fischer@cs.yale.edu>.
This commit is contained in:
Ulrich Drepper
2000-08-22 03:49:38 +00:00
parent 7ca404adab
commit faa5756314
18 changed files with 42 additions and 30952 deletions

View File

@ -249,6 +249,7 @@ __initstate_r (seed, arg_state, n, buf)
return 0;
fail:
__set_errno (EINVAL);
return -1;
}
@ -274,7 +275,7 @@ __setstate_r (arg_state, buf)
int degree;
int separation;
if (buf == NULL)
if (arg_state == NULL || buf == NULL)
goto fail;
old_type = buf->rand_type;
@ -300,7 +301,7 @@ __setstate_r (arg_state, buf)
}
buf->state = &new_state[1];
/* Set end_ptr too. */
buf->end_ptr = &new_state[degree];
buf->end_ptr = &new_state[1 + degree];
return 0;
@ -369,6 +370,7 @@ __random_r (buf, result)
return 0;
fail:
__set_errno (EINVAL);
return -1;
}