We show how to utilize code-range data protection to enforce the private access specifiers of Object Oriented classes at runtime. We exploit the fact that code and data are often organized into modules exporting specified interfaces, even in non-Object-Oriented languages. We enforce at runtime the integrity and simplistic privacy of the module: its state cannot be written nor read other than through its interface. We provide module integrity even to non-memory-safe languages such as C and C++, without requiring automatic memory management. This is not best-effort protection: when used properly, we comprehensively guarantee that one software module cannot violate the integrity of another. That is, we make software objects hard.
Our extensions are simple, modest, and provide the guarantee we claim. We give simulation measurements to show the performance overhead is low. We show how most software can be compiled to take advantage of these extensions with modest and partially automatable modification.
Hard-Object: Enforcing Object Interfaces Using Code-Range Data Protection
Researchers may make free and open use of the UC Berkeley Library’s digitized public domain materials. However, some materials in our online collections may be protected by U.S. copyright law (Title 17, U.S.C.). Use or reproduction of materials protected by copyright beyond that allowed by fair use (Title 17, U.S.C. § 107) requires permission from the copyright owners. The use or reproduction of some materials may also be restricted by terms of University of California gift or purchase agreements, privacy and publicity rights, or trademark law. Responsibility for determining rights status and permissibility of any use or reproduction rests exclusively with the researcher. To learn more or make inquiries, please see our permissions policies (https://www.lib.berkeley.edu/about/permissions-policies).