random_mutex is locked, because
* a cancellation point may occur during fprintf(), and no cancellation handler
had been installed, and
* the XSH5 specifcation of these functions does not permit output to stderr.
Therefore, in initstate() and setstate(), return a null pointer if the supplied
state is not valid. This also fixes a bug in setstate() which caused corrupt
state information being used despite printing an error message.