--- title: "Quandary" description: "The Quandary taint analysis detects flows of values between sources and sinks, except if the value went through a \"sanitizer\". In addition to some defaults, users can specify their own sources, sinks, and sanitizers functions." --- The Quandary taint analysis detects flows of values between sources and sinks, except if the value went through a "sanitizer". In addition to some defaults, users can specify their own sources, sinks, and sanitizers functions. Activate with `--quandary`. Supported languages: - C/C++/ObjC: Yes - C#/.Net: Yes - Erlang: Yes - Java: Yes Quandary is a static taint analyzer that identifies a variety of unsafe information flows. It has a small list of built-in [sources](https://github.com/facebook/infer/blob/master/infer/src/quandary/JavaTrace.ml#L36) and [sinks](https://github.com/facebook/infer/blob/master/infer/src/quandary/JavaTrace.ml#L178), and you can define custom sources and sinks in your `.inferconfig` file (see example [here](https://github.com/facebook/infer/blob/master/infer/tests/codetoanalyze/java/quandary/.inferconfig)). ## List of Issue Types The following issue types are reported by this checker: - [CREATE_INTENT_FROM_URI](/docs/next/all-issue-types#create_intent_from_uri) - [CROSS_SITE_SCRIPTING](/docs/next/all-issue-types#cross_site_scripting) - [EXPOSED_INSECURE_INTENT_HANDLING](/docs/next/all-issue-types#exposed_insecure_intent_handling) - [INSECURE_INTENT_HANDLING](/docs/next/all-issue-types#insecure_intent_handling) - [JAVASCRIPT_INJECTION](/docs/next/all-issue-types#javascript_injection) - [LOGGING_PRIVATE_DATA](/docs/next/all-issue-types#logging_private_data) - [QUANDARY_TAINT_ERROR](/docs/next/all-issue-types#quandary_taint_error) - [SHELL_INJECTION](/docs/next/all-issue-types#shell_injection) - [SHELL_INJECTION_RISK](/docs/next/all-issue-types#shell_injection_risk) - [SQL_INJECTION](/docs/next/all-issue-types#sql_injection) - [SQL_INJECTION_RISK](/docs/next/all-issue-types#sql_injection_risk) - [UNTRUSTED_BUFFER_ACCESS](/docs/next/all-issue-types#untrusted_buffer_access) - [UNTRUSTED_DESERIALIZATION](/docs/next/all-issue-types#untrusted_deserialization) - [UNTRUSTED_DESERIALIZATION_RISK](/docs/next/all-issue-types#untrusted_deserialization_risk) - [UNTRUSTED_ENVIRONMENT_CHANGE_RISK](/docs/next/all-issue-types#untrusted_environment_change_risk) - [UNTRUSTED_FILE](/docs/next/all-issue-types#untrusted_file) - [UNTRUSTED_FILE_RISK](/docs/next/all-issue-types#untrusted_file_risk) - [UNTRUSTED_HEAP_ALLOCATION](/docs/next/all-issue-types#untrusted_heap_allocation) - [UNTRUSTED_INTENT_CREATION](/docs/next/all-issue-types#untrusted_intent_creation) - [UNTRUSTED_URL_RISK](/docs/next/all-issue-types#untrusted_url_risk) - [UNTRUSTED_VARIABLE_LENGTH_ARRAY](/docs/next/all-issue-types#untrusted_variable_length_array) - [USER_CONTROLLED_SQL_RISK](/docs/next/all-issue-types#user_controlled_sql_risk)