rand.c
上传用户:tjescc
上传日期:2021-02-23
资源大小:419k
文件大小:2k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. /* 
  2.  * Copyright (C) 2002 Michel Arboi
  3.  *
  4.  * This library is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU Library General Public
  6.  * License as published by the Free Software Foundation; either
  7.  * version 2 of the License, or (at your option) any later version.
  8.  *
  9.  * This library is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.  * Library General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU Library General Public
  15.  * License along with this library; if not, write to the Free
  16.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  *
  18.  * Random generator helper functions
  19.  */ 
  20. #define EXPORTING
  21. #include <includes.h>
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. /*
  25.  * If the libc does not provide [ls]rand48, we use [s]rand() instead.
  26.  *
  27.  * While rand() is weak in comparison of lrand48, this is not a big
  28.  * issue, as we want moderately random values in our code (meaning
  29.  * that we don't use any of these functions for crypto-related operations)
  30.  *
  31.  */
  32. ExtFunc void
  33. nessus_init_random()
  34. {
  35.   FILE *fp;
  36.   long x = 0;
  37.   if ((fp = fopen("/dev/urandom", "r")) != NULL)
  38.     {
  39.       (void) fread(&x, sizeof(x), 1, fp);
  40.       fclose(fp);
  41.     }
  42.   x += time(NULL) + getpid() + getppid();
  43.   srand48(x);
  44. }
  45. #ifndef HAVE_LRAND48
  46. ExtFunc
  47. long lrand48()
  48. {
  49.  return rand();
  50. }
  51. ExtFunc
  52. void srand48(long seed)
  53.  srand(seed);
  54. }
  55. #endif