Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Content by Label
showLabelsfalse
maxResults99
label+capability,-void
showSpacefalse
sorttitle
space@self
cqllabel = "capability" and label != "void" and space = currentSpace()

Wiki Markup
Inner classes have access to all the fields of their surrounding class, making them a source of leaked capabilities and of leaked data. There is no bytecode support for inner classes, so they are compiled into ordinary classes with names like OuterClass$InnerClass. So that the inner class can access the private fields of the outer class, the private access is changed to package access in the bytecode. For that reason, handcrafted bytecode can access these private fields (see “Security Aspects in Java Bytecode Engineering” \[[Schoenefeld 04|AA. Bibliography#Schoenefeld 04]\] for an example).