Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 06 Feb 2002 11:55:21 +1030 (CST)
From:      "Daniel O'Connor" <doconnor@gsoft.com.au>
To:        Alfred Perlstein <bright@mu.org>
Cc:        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:  <XFMail.20020206115521.doconnor@gsoft.com.au>
In-Reply-To: <20020205134833.T59017@elvis.mu.org>

next in thread | previous in thread | raw e-mail | index | archive | help

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().

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

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?XFMail.20020206115521.doconnor>