TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
From system F to typed assembly language
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for Java bytecode subroutines
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Javalight is type-safe—definitely
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A specification of Java loading and bytecode verification
CCS '98 Proceedings of the 5th ACM conference on Computer and communications security
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Java Virtual Machine Specification
Java Virtual Machine Specification
Byte Code Verification for Java Smart Card Based on Model Checking
ESORICS '98 Proceedings of the 5th European Symposium on Research in Computer Security
Java Security: From HotJava to Netscape and Beyond
SP '96 Proceedings of the 1996 IEEE Symposium on Security and Privacy
A simple, comprehensive type system for Java bytecode subroutines
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for Java bytecode subroutines
ACM Transactions on Programming Languages and Systems (TOPLAS)
Design and implementation of a distributed virtual machine for networked computers
Proceedings of the seventeenth ACM symposium on Operating systems principles
A formal framework for the Java bytecode language and verifier
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type elaboration and subtype completion for Java bytecode
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using production grammars in software testing
Proceedings of the 2nd conference on Domain-specific languages
Verifying object initialization in the Java bytecode language
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 2
A Practical Method for Specification and Analysis of Exception Handling-A Java/JVM Case Study
IEEE Transactions on Software Engineering
Standard fixpoint iteration for Java bytecode verification
ACM Transactions on Programming Languages and Systems (TOPLAS)
Protection in programming-language translations
Secure Internet programming
Security properties of typed applets
Secure Internet programming
Type elaboration and subtype completion for Java bytecode
ACM Transactions on Programming Languages and Systems (TOPLAS)
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
Formalization and Analysis of Class Loading in Java
Higher-Order and Symbolic Computation
Theoretical Computer Science
A B model for ensuring soundness of a large subset of the java card virtual machine
Science of Computer Programming - Special issure on formal methods for industrial critical systems (FMICS 2000)
Proof-Directed De-compilation of Low-Level Code
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
Performance Analysis of Java Using Petri Nets
HPCN Europe 2000 Proceedings of the 8th International Conference on High-Performance Computing and Networking
A formal model of the java multi-threading system and its validation on a known problem
IPDPS '01 Proceedings of the 15th International Parallel & Distributed Processing Symposium
Towards an Algebraic Specification of the Java Virtual Machine
Proceedings of the ESPRIT Working Group 8533 on Prospects for Hardware Foundations: NADA - New Hardware Design Methods, Survey Chapters
Typing Assembly Programs with Explicit Forwarding
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
Proving the Soundness of a Java Bytecode Verifier Specification in Isabelle/HOL
TACAS '99 Proceedings of the 5th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Verified Bytecode Model Checkers
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
FoSSaCS '01 Proceedings of the 4th International Conference on Foundations of Software Science and Computation Structures
The PACAP Prototype: A Tool for Detecting Java Card Illegal Flow
JavaCard '00 Revised Papers from the First International Workshop on Java on Smart Cards: Programming and Security
An Abstract Model of Java Dynamic Linking and Loading
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
A Formal Executable Semantics of the JavaCard Platform
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
Checking secure interactions of smart card applets: extended version
Journal of Computer Security - Special issue on ESORICS 2000
Theoretical Computer Science - Foundations of software science and computation structures
Towards array bound check elimination in Java TM virtual machine language
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Journal of Automated Reasoning
Stack-based typed assembly language
Journal of Functional Programming
A flexible model for dynamic linking in Java and C#
Theoretical Computer Science
Using production grammars in software testing
DSL'99 Proceedings of the 2nd conference on Conference on Domain-Specific Languages - Volume 2
A Static Bug Detector for Uninitialized Field References in Java Programs
IEICE - Transactions on Information and Systems
Towards Verification of Well-Formed Transactions in Java Card Bytecode
Electronic Notes in Theoretical Computer Science (ENTCS)
Flexible models for dynamic linking
ESOP'03 Proceedings of the 12th European conference on Programming
On object initialization in the Java bytecode
Computer Communications
Hi-index | 0.00 |
In the standard Java implementation, a Java language program is compiled to Java bytecode. This bytecode may be sent across the network to another site, where it is then interpreted by the Java Virtual Machine. Since bytecode may be written by hand, or corrupted during network transmission, the Java Virtual Machine contains a bytecode verifier that performs a number of consistency checks before code is interpreted. As illustrated by previous attacks on the Java Virtual Machine, these tests, which include type correctness, are critical for system security. In order to analyze existing bytecode verifiers and to understand the properties that should be verified, we develop a precise specification of statically-correct Java bytecode, in the form of a type system. Our focus in this paper is a subset of the bytecode language dealing with object creation and initialization. For this subset, we prove that for every Java bytecode program that satisfies our typing constraints, every object is initialized before it is used. The type system is easily combined with a previous system developed by Stata and Abadi for bytecode subroutines. Our analysis of subroutines and object initialization reveals a previously unpublished bug in the Sun JDK bytecode verifier.