Javalight is type-safe—definitely
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for object initialization in the Java bytecode language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A specification of Java loading and bytecode verification
CCS '98 Proceedings of the 5th ACM conference on Computer and communications security
Java Virtual Machine Specification
Java Virtual Machine Specification
A type system for object initialization in the Java bytecode language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
Checking security of Java bytecode by abstract interpretation
Proceedings of the 2002 ACM symposium on Applied computing
A new type system for JVM lock primitives
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
Fixing the Java bytecode verifier by a suitable type domain
SEKE '02 Proceedings of the 14th international conference on Software engineering and knowledge engineering
Local model checking of Java bytecode
SEKE '02 Proceedings of the 14th international conference on Software engineering and knowledge engineering
Bytecode verification on Java smart cards
Software—Practice & Experience
A portable-approach to dynamic optimization in run-time specialization
New Generation Computing - Partial evaluation and program transformation
Formalization and Analysis of Class Loading in Java
Higher-Order and Symbolic Computation
Theoretical Computer Science
Run-Time Bytecode Specialization
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
Tool-Assisted Specification and Verification of the JavaCard Platform
AMAST '02 Proceedings of the 9th International Conference on Algebraic Methodology and Software Technology
On-Card Bytecode Verification for Java Card
E-SMART '01 Proceedings of the International Conference on Research in Smart Cards: Smart Card Programming and Security
Jakarta: A Toolset for Reasoning about JavaCard
E-SMART '01 Proceedings of the International Conference on Research in Smart Cards: Smart Card Programming and Security
Java Bytecode Verification: An Overview
CAV '01 Proceedings of the 13th International Conference on Computer Aided Verification
Garbage Collector Memory Accounting in Language-Based Systems
SP '03 Proceedings of the 2003 IEEE Symposium on Security and Privacy
Completeness of a Bytecode Verifier and a Certifying Java-to-JVM Compiler
Journal of Automated Reasoning
Java Bytecode Verification: Algorithms and Formalizations
Journal of Automated Reasoning
Bytecode Verification by Model Checking
Journal of Automated Reasoning
A Type System for the Java Bytecode Language and Verifier
Journal of Automated Reasoning
Java bytecode verification on Java cards
Proceedings of the 2004 ACM symposium on Applied computing
Stack-based typed assembly language
Journal of Functional Programming
Heap-Bounded Assembly Language
Journal of Automated Reasoning
Pluggable verification modules: an extensible protection mechanism for the JVM
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Compositional type systems for stack-based low-level languages
CATS '06 Proceedings of the 12th Computing: The Australasian Theroy Symposium - Volume 51
Reasoning about safety properties in a JVM-like environment
Science of Computer Programming
Type Systems for Optimizing Stack-based Code
Electronic Notes in Theoretical Computer Science (ENTCS)
Java bytecode verification via static single assignment form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Towards proving type safety of .NET CIL
Science of Computer Programming
Structural Encoding of Static Single Assignment Form
Electronic Notes in Theoretical Computer Science (ENTCS)
JVM Bytecode Verification Without Dataflow Analysis
Electronic Notes in Theoretical Computer Science (ENTCS)
Integrated Java Bytecode Verification
Electronic Notes in Theoretical Computer Science (ENTCS)
Mnemonics: type-safe bytecode generation at run time
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Mnemonics: type-safe bytecode generation at run time
Higher-Order and Symbolic Computation
Formal methods for smartcard security
Foundations of Security Analysis and Design III
Safe locking for multi-threaded java
FSEN'11 Proceedings of the 4th IPM international conference on Fundamentals of Software Engineering
Compositional type systems for stack-based low-level languages
CATS '06 Proceedings of the Twelfth Computing: The Australasian Theory Symposium - Volume 51
Hi-index | 0.00 |
Java is typically compiled into an intermediate language, JVML, that is interpreted by the Java Virtual Machine. Because mobile JVML code is not always trusted, a bytecode verifier enforces static constraints that prevent various dynamic errors. Given the importance of the bytecode verifier for security, its current descriptions are inadequate. This article proposes using typing rules to describe the bytecode verifier because they are more precise than prose, clearer than code, and easier to reason about than either. JVML has a subroutine construct which is used for the compilation of Java's try-finally statement. Subroutines are a major source of complexity for the bytecode verifier because they are not obviously last-in/first-out and because they require a kind of polymorphism. Focusing on subroutines, we isolate an interesting, small subset of JVML. We give typing rules for this subset and prove their correctness. Our type system constitutes a sound basis for bytecode verification and a rational reconstruction of a delicate part of Sun's bytecode verifier.