Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Feb 2002 23:40:38 -0500 (EST)
From:      Robert Watson <rwatson@freebsd.org>
To:        Alfred Perlstein <bright@mu.org>
Cc:        "Daniel O'Connor" <doconnor@gsoft.com.au>, cvs-all@freebsd.org, cvs-committers@freebsd.org, des@freebsd.org, Mark Murray <mark@grondar.za>, "Andrey A. Chernov" <ache@nagual.pp.ru>
Subject:   Re: cvs commit: src/lib/libpam/modules/pam_unix pam_unix.c
Message-ID:  <Pine.NEB.3.96L.1020205234010.67775C-100000@fledge.watson.org>
In-Reply-To: <20020205172633.B59017@elvis.mu.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Mind you, none of this is thread safe, but thread safe is not exactly a
feature of many of our library interfaces :-).

Robert N M Watson             FreeBSD Core Team, TrustedBSD Project
robert@fledge.watson.org      NAI Labs, Safeport Network Services

On Tue, 5 Feb 2002, Alfred Perlstein wrote:

> * Daniel O'Connor <doconnor@gsoft.com.au> [020205 17:25] wrote:
> > 
> > On 05-Feb-2002 Alfred Perlstein wrote:
> > >> To see the bug, run following test application with "call_pam" set to 1 
> > >> and 0
> > > 
> > > I understand the issue you're bringing up, would it make sense
> > > to create/utilize a save/restore random() context function?
> > 
> > No need to create one..
> > setstate() returns the old state which can then be passed back to setstate().
> 
> Andrey, can you use this then?
> 
> > 
> > eg..
> > #include <stdlib.h>
> > #include <stdio.h>
> > 
> > void foo(void);
> > 
> > int
> > main(int argc, char **argv) {
> >         printf("%ld\n", random());
> >         foo();
> >         printf("%ld\n", random());
> >         printf("%ld\n", random());
> >         foo();
> >         printf("%ld\n", random());
> > }
> > 
> > void
> > foo(void) {
> >         char *rndstate;
> >         char state[16];
> > 
> >         rndstate = initstate(123456789, state, sizeof(state));
> >         if (rndstate == NULL) {
> >                 printf("Unable to reseed\n");
> >                 exit(1);
> >         }
> >         srandomdev();
> > 
> >         printf("foo - %ld\n", random());
> > 
> >         setstate(rndstate);
> > }
> > 
> > ---
> > Daniel O'Connor software and network engineer
> > for Genesis Software - http://www.gsoft.com.au
> > "The nice thing about standards is that there
> > are so many of them to choose from."
> >   -- Andrew Tanenbaum
> 
> -- 
> -Alfred Perlstein [alfred@freebsd.org]
> 'Instead of asking why a piece of software is using "1970s technology,"
>  start asking why software is ignoring 30 years of accumulated wisdom.'
> Tax deductable donations for FreeBSD: http://www.freebsdfoundation.org/
> 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1020205234010.67775C-100000>