Consider environment pointers as unsafe (-stubbed-pointers-are-unsafe)
Specify that environment pointers can be unsafe to dereference unless constrained otherwise
Description
This option affects a Code Prover analysis only.
This option is not available for code generated from MATLAB® code or Simulink® models.
Specify that the verification must consider environment pointers as unsafe unless otherwise constrained. Environment pointers are pointers that can be assigned values outside your code.
Environment pointers include:
- Global or - externpointers.
- Pointers returned from stubbed functions. - A function is stubbed if your code does not contain the function definition or you override a function definition by using the option - Functions to stub (-functions-to-stub).
- Pointer parameters of functions whose calls are generated by the software. - A function call is generated if you verify a module or library and the module or library does not have an explicit call to the function. You can also force a function call to be generated with the option - Functions to call (-main-generator-calls).
Set Option
Set the option using one of these methods:
- Polyspace® user interface (desktop products only): In your project configuration, select the Verification Assumptions node and then select this option. 
- Polyspace Platform user interface (desktop products only): In your project configuration, on the Static Analysis tab, select the Run Time Errors > Verification Assumptions node and then select this option. 
- Command line and options file: Use the option - -stubbed-pointers-are-unsafe. See Command-Line Information.
Why Use This Option
Use this option so that the verification makes more conservative assumptions about pointers from external sources.
If you specify this option, the verification considers that
environment pointers can have a NULL value. If
you read an environment pointer without checking for NULL,
the Illegally dereferenced pointer check shows
a potential error in orange. The message associated with the orange
check shows the pointer can be NULL.
Settings
 On On
- The verification considers that environment pointers can have a - NULLvalue.
 Off (default) Off (default)
- The verification considers that environment pointers: - Cannot have a - NULLvalue.
- Points within allowed bounds. 
 
Tips
- Enable this option during the integration phase. In this phase, you provide complete code for verification. Even if an orange check originates from external sources, you are likely to place protections against unsafe pointers from such sources. For instance, if you obtain a pointer from an unknown source, you check the pointer for - NULLvalue.- Disable this option during the unit testing phase. In this phase, you focus on errors originating from your unit. 
- If you are verifying code implementation of AUTOSAR runnables, Code Prover assumes that pointer arguments to runnables and pointers returned from - Rte_functions are not- NULL. You cannot use this option to change the assumption. See Run Polyspace on AUTOSAR Code with Conservative Assumptions.
- If you enable this option, the number of orange checks in your code might increase. - Environment Pointers Safe - Environment Pointers Unsafe - The Illegally dereferenced pointer check is green. The verification assumes that - env_ptris not NULL and any dereference is within allowed bounds. The verification assumes that the result of the dereference is full range. For instance, in this case, the return value has the full range of type- int.- int func (int *env_ptr) { return *env_ptr; }- The Illegally dereferenced pointer check is orange. The verification assumes that - env_ptrcan be NULL.- int func (int *env_ptr) { return *env_ptr; }- If you enable this option, the number of gray checks might decrease. - Environment Pointers Safe - Environment Pointers Unsafe - The verification assumes that - env_ptris not NULL. The- ifcondition is always true and the- elseblock is unreachable.- #include <stdlib.h> int func (int *env_ptr) { if(env_ptr!=NULL) return *env_ptr; else return 0; }- The verification assumes that - env_ptrcan be NULL. The- ifcondition is not always true and the- elseblock can be reachable.- #include <stdlib.h> int func (int *env_ptr) { if(env_ptr!=NULL) return *env_ptr; else return 0; }
- Instead of considering all environment pointers as safe or unsafe, you can individually constrain some of the environment pointers. See the description of Initialize Pointer in External Constraints for Polyspace Analysis. - When you individually constrain a pointer, you first specify an Init Mode, and then specify through the Initialize Pointer option whether the pointer is - Null,- Not Null, or- Maybe Null. Depending on the Init Mode, you can either override the global specification for all environment pointers or not.- If you set the Init Mode of the pointer to - INITor- PERMANENT, your selection for Initialize Pointer overrides your specification for this option. For instance, if you specify- Not NULLfor an environment pointer- ptr, the verification assumes that- ptris not NULL even if you specify that environment pointers must be considered unsafe.
- If you set the Init Mode to - MAIN GENERATOR, the verification uses your specification for this option.- For pointers returned from stubbed functions, the option - MAIN GENERATORis not available. If you override the global specification for such a pointer through the Initialize Pointer option in constraints, you cannot toggle back to the global specification without changing the Initialize Pointer option too.
 
- If you disable this option, the verification considers that dereferences at all pointer depths are valid. - For instance, all the dereferences are considered valid in this code: - int*** stub(void); void func2() { int ***ptr = stub(); int **ptr2 = *ptr; int *ptr3 = *ptr2; }
Command-Line Information
| Parameter: -stubbed-pointers-are-unsafe | 
| Default: Off | 
| Example (Code Prover): polyspace-code-prover
-sources  | 
| Example (Code Prover
                    Server): polyspace-code-prover-server -sources  | 
Version History
Introduced in R2016b