From: "W. Trevor King" <wking-lbwBIqCsw6A3uPMLIKxrzw@public.gmane.org>
To: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Cc: linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [patch] random.3: Update initstate() return value description to match glibc
Date: Thu, 16 Sep 2010 12:44:15 -0400 [thread overview]
Message-ID: <20100916164415.GA5137@thialfi> (raw)
[-- Attachment #1: Type: text/plain, Size: 2295 bytes --]
The glibc manual section on initstate
http://www.gnu.org/software/libc/manual/html_node/BSD-Random.html#index-initstate-2292
makes no mention of NULL on error (which it does mention for setstate).
As proof, the test code
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char **argv)
{
void *state = NULL;
int arg_state = 0;
printf("errno before %d\n", errno);
state = (void *) initstate(1, (void *) &arg_state, 7);
printf("errno after %d (EINVAL is %d)\n", errno, EINVAL);
printf("state returned from bad initstate call: %p\n", state);
return 0;
}
returns
errno before 0
errno after 22 (EINVAL is 22)
state returned from bad initstate call: 0xb781f040
not
errno before 0
errno after 22 (EINVAL is 22)
state returned from bad initstate call: (nil)
This makes sense because glibc's stdlib/random.c defines __initstate()
to always return ostate (blank lines removed):
char *
__initstate (seed, arg_state, n)
unsigned int seed;
char *arg_state;
size_t n;
{
int32_t *ostate;
__libc_lock_lock (lock);
ostate = &unsafe_state.state[-1];
__initstate_r (seed, arg_state, n, &unsafe_state);
__libc_lock_unlock (lock);
return (char *) ostate;
}
Personally, I think the behavior specified by the old man page makes
more sense, but I don't imagine the glibc folks want to change their
version.
This patch it against the current Git version of man-pages, and was
generated with 'git format-patch -1' before I altered it to include
the extra information the man-pages project suggested:
http://www.kernel.org/doc/man-pages/patches.html
W. Trevor King
---
man3/random.3 | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/man3/random.3 b/man3/random.3
index 7568dc1..6845b98 100644
--- a/man3/random.3
+++ b/man3/random.3
@@ -120,9 +120,10 @@ The
function returns no value.
The
.BR initstate ()
-and
+function returns a pointer to the previous state.
+The
.BR setstate ()
-functions return a pointer to the previous state
+function returns a pointer to the previous state
array, or NULL on error.
.SH ERRORS
.TP
--
1.7.2.2.173.g515cc
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
next reply other threads:[~2010-09-16 16:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-16 16:44 W. Trevor King [this message]
2010-09-19 14:09 ` [patch] random.3: Update initstate() return value description to match glibc Michael Kerrisk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100916164415.GA5137@thialfi \
--to=wking-lbwbiqcsw6a3upmlikxrzw@public.gmane.org \
--cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox