Array Declared Public, Final, and Static

Draft Variant
Structure: Simple
Description

The product declares an array public, final, and static, which is not sufficient to prevent the array's contents from being modified.

Extended Description

Because arrays are mutable objects, the final constraint requires that the array object itself be assigned only once, but makes no guarantees about the values of the array elements. Since the array is public, a malicious program can change the values stored in the array. As such, in most cases an array declared public, final and static is a bug.

Common Consequences 1
Scope: Integrity

Impact: Modify Application Data

Potential Mitigations 1
Phase: Implementation
In most situations the array should be made private.
Demonstrative Examples 1
The following Java Applet code mistakenly declares an array public, final and static.

Code Example:

Bad
Java
java
Applicable Platforms
Languages:
Java : Undetermined
Modes of Introduction
Implementation
Taxonomy Mapping
  • The CERT Oracle Secure Coding Standard for Java (2011)
  • Software Fault Patterns