The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Уязвимость в вымогательском ПО для Linux/FreeBSD свела стойк..."
Отправлено Sw00p aka Jerom, 18-Ноя-15 15:21 
/**
01495    * A standard interface to a platform-specific non-deterministic
01496    * random number generator (if any are available).
01497    */
01498   class random_device
01499   {
01500   public:
01501     /** The type of the generated random value. */
01502     typedef unsigned int result_type;
01503
01504     // constructors, destructors and member functions
01505
01506 #ifdef _GLIBCXX_USE_RANDOM_TR1
01507
01508     explicit
01509     random_device(const std::string& __token = "/dev/urandom")
01510     {
01511       if ((__token != "/dev/urandom" && __token != "/dev/random")
01512       || !(_M_file = std::fopen(__token.c_str(), "rb")))
01513     std::__throw_runtime_error(__N("random_device::"
01514                        "random_device(const std::string&)"));
01515     }
01516
01517     ~random_device()
01518     { std::fclose(_M_file); }
01519
01520 #else
01521
01522     explicit
01523     random_device(const std::string& __token = "mt19937")
01524     : _M_mt(_M_strtoul(__token)) { }
01525
01526   private:
01527     static unsigned long
01528     _M_strtoul(const std::string& __str)
01529     {
01530       unsigned long __ret = 5489UL;
01531       if (__str != "mt19937")
01532     {
01533       const char* __nptr = __str.c_str();
01534       char* __endptr;
01535       __ret = std::strtoul(__nptr, &__endptr, 0);
01536       if (*__nptr == '\0' || *__endptr != '\0')
01537         std::__throw_runtime_error(__N("random_device::_M_strtoul"
01538                        "(const std::string&)"));
01539     }
01540       return __ret;
01541     }
01542
01543   public:
01544
01545 #endif
01546
01547     result_type
01548     min() const
01549     { return std::numeric_limits<result_type>::min(); }
01550
01551     result_type
01552     max() const
01553     { return std::numeric_limits<result_type>::max(); }
01554
01555     double
01556     entropy() const
01557     { return 0.0; }
01558
01559     result_type
01560     operator()()
01561     {
01562 #ifdef _GLIBCXX_USE_RANDOM_TR1
01563       result_type __ret;
01564       std::fread(reinterpret_cast<void*>(&__ret), sizeof(result_type),
01565          1, _M_file);
01566       return __ret;
01567 #else
01568       return _M_mt();
01569 #endif
01570     }
01571
01572     // No copy functions.
01573     random_device(const random_device&) = delete;
01574     void operator=(const random_device&) = delete;
01575
01576   private:
01577
01578 #ifdef _GLIBCXX_USE_RANDOM_TR1
01579     FILE*        _M_file;
01580 #else
01581     mt19937      _M_mt;
01582 #endif
01583   };
 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру