open Bap.Std
open Core_kernel.Std

open Graph_utils       
open Symbol_utils

let name = "CWE332"
let version = "0.1" 

(* ToDo: Implement more checks for other PRNGs.
See https://wiki.openssl.org/index.php/Random_Numbers *)
let check_cwe program proj tid_map =
  match Option.both (find_symbol program "srand") (find_symbol program "rand") with
  | None -> begin
      match (find_symbol program "rand") with
      | None -> ()
      | Some _ -> Log_utils.warn "[%s] {%s} (Insufficient Entropy in PRNG) program uses rand without calling srand before" name version
    end
  | Some (srand_tid, rand_tid) -> ()