diff options
Diffstat (limited to 'tests/rng-fork.c')
-rw-r--r-- | tests/rng-fork.c | 119 |
1 files changed, 57 insertions, 62 deletions
diff --git a/tests/rng-fork.c b/tests/rng-fork.c index 7ff14153da..d2692e2f59 100644 --- a/tests/rng-fork.c +++ b/tests/rng-fork.c @@ -36,77 +36,72 @@ #include <gnutls/crypto.h> #if !defined(_WIN32) -static void dump(const char* name, unsigned char* buf, int buf_size) +static void dump(const char *name, unsigned char *buf, int buf_size) { -int i; - printf("%s: ", name); - for(i=0;i<buf_size;i++) - printf("%.2x:", buf[i]); - printf("\n"); + int i; + printf("%s: ", name); + for (i = 0; i < buf_size; i++) + printf("%.2x:", buf[i]); + printf("\n"); } - + #define FILENAME "./rng-test" - -void -doit (void) + +void doit(void) { - unsigned char buf1[32]; - unsigned char buf2[32]; - pid_t pid; - int ret; - FILE* fp; + unsigned char buf1[32]; + unsigned char buf2[32]; + pid_t pid; + int ret; + FILE *fp; + + global_init(); + pid = fork(); + if (pid == 0) { + fp = fopen(FILENAME, "w"); + if (fp == NULL) + fail("cannot open file"); + + gnutls_rnd(GNUTLS_RND_NONCE, buf1, sizeof(buf1)); + if (debug) + dump("buf1", buf1, sizeof(buf1)); + + fwrite(buf1, 1, sizeof(buf1), fp); + fclose(fp); + } else { + /* daddy */ + gnutls_rnd(GNUTLS_RND_NONCE, buf2, sizeof(buf2)); + if (debug) + dump("buf2", buf2, sizeof(buf2)); + waitpid(pid, NULL, 0); + + fp = fopen(FILENAME, "r"); + if (fp == NULL) + fail("cannot open file"); + + ret = fread(buf1, 1, sizeof(buf1), fp); + + fclose(fp); + remove(FILENAME); - global_init (); - pid = fork(); - if (pid == 0) - { - fp = fopen(FILENAME, "w"); - if (fp == NULL) - fail("cannot open file"); - - gnutls_rnd (GNUTLS_RND_NONCE, buf1, sizeof (buf1)); - if (debug) dump("buf1", buf1, sizeof(buf1)); - - fwrite(buf1, 1, sizeof(buf1), fp); - fclose(fp); - } - else - { - /* daddy */ - gnutls_rnd (GNUTLS_RND_NONCE, buf2, sizeof (buf2)); - if (debug) dump("buf2", buf2, sizeof(buf2)); - waitpid(pid, NULL, 0); - - fp = fopen(FILENAME, "r"); - if (fp == NULL) - fail("cannot open file"); - - ret = fread(buf1, 1, sizeof(buf1), fp); - - fclose(fp); - remove(FILENAME); - - if (ret != sizeof(buf1)) - { - fail("error testing the random generator."); - return; - } + if (ret != sizeof(buf1)) { + fail("error testing the random generator."); + return; + } - if (memcmp(buf1, buf2, sizeof(buf1))==0) - { - fail("error in the random generator. Produces same valus after fork()"); - return; - } - if(debug) - success("success\n"); - } + if (memcmp(buf1, buf2, sizeof(buf1)) == 0) { + fail("error in the random generator. Produces same valus after fork()"); + return; + } + if (debug) + success("success\n"); + } - gnutls_global_deinit (); + gnutls_global_deinit(); } #else -void -doit (void) +void doit(void) { - exit (77); + exit(77); } #endif |