(** This module implements a check for CWE-248: Uncaught Exception. An uncaught exception may lead to a crash. See {: https://cwe.mitre.org/data/definitions/248.html} for a detailed description. {1 How the check works} The tool searches for exception throws that are reachable in the callgraph without touching a function that contains a catch block. We do not check whether a catch block can actually catch the thrown exceptions, thus we generate some false negatives. {1 False Positives} - There is no check whether a specific exception throw can be triggered or not {1 False Negatives} - An exception that gets catched through one execution path but would not get catched through a different execution path will not get flagged. - It is not checked whether the catch block can actually catch a thrown exception or not. A catch block may only be able to catch exceptions of a specific type. *) val name : string val version : string val check_cwe : Bap.Std.program Bap.Std.term -> Bap.Std.project -> Bap.Std.word Bap.Std.Tid.Map.t -> string list list -> string list -> unit