...
This noncompliant code example derives some functional behavior from the implementation of the class java.lang.StringBuffer
, prior to JDK v1.5. It defines class SensitiveClass
which contains a character array used to internally hold a filename, along with a Boolean
shared variable, initialized to false
.
Code Block | ||
---|---|---|
| ||
final class SensitiveClass {
private char[] filename;
private Boolean shared = false;
SensitiveClass(String filename) {
this.filename = filename.toCharArray();
}
final void replace() {
if(!shared)
for(int i = 0; i < filename.length; i++) {
filename[i]= 'x';
}
}
final String get() {
if(!shared) {
shared = true;
return String.valueOf(filename);
} else {
throw new IllegalStateException("Failed to get instance");
}
}
final void printFilename() {
System.out.println(String.valueOf(filename));
}
}
|
...