Type inference with polymorphic recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Static typing for dynamic messages
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modern languages and Microsoft's component object model
Communications of the ACM
Calling hell from heaven and heaven from hell
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Scalable context-sensitive flow analysis using instantiation constraints
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Type-base flow analysis: from polymorphic subtyping to CFL-reachability
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Java Native Interface: Programmer's Guide and Reference
Java Native Interface: Programmer's Guide and Reference
The Exu Approach to Safe, Transparent and Lightweight Interoperability
COMPSAC '01 Proceedings of the 25th International Computer Software and Applications Conference on Invigorating Software Development
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Language integration in the common language runtime
ACM SIGPLAN Notices
Mockingbird: Flexible Stub Compilation from Pairs of Declarations
ICDCS '99 Proceedings of the 19th IEEE International Conference on Distributed Computing Systems
Polylingual systems: an approach to seamless interoperability
Polylingual systems: an approach to seamless interoperability
Design of Large-Scale Polylingual Systems
Proceedings of the 26th International Conference on Software Engineering
Static Checking of Dynamically Generated Queries in Database Applications
Proceedings of the 26th International Conference on Software Engineering
Grammar-based analysis of string expressions
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Checking type safety of foreign function calls
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
SWIG: an easy to use tool for integrating scripting languages with C and C++
TCLTK'96 Proceedings of the 4th conference on USENIX Tcl/Tk Workshop, 1996 - Volume 4
Interlanguage object sharing with SOM
COOTS'96 Proceedings of the 2nd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 2
Precise analysis of string expressions
SAS'03 Proceedings of the 10th international conference on Static analysis
Improving software quality with static analysis
PASTE '07 Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Jeannie: granting java native interface developers their wishes
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Ilea: inter-language analysis across java and c
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Type qualifier inference for java
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Checking type safety of foreign function calls
ACM Transactions on Programming Languages and Systems (TOPLAS)
Finding bugs in java native interface programs
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
An empirical security study of the native code in the JDK
SS'08 Proceedings of the 17th conference on Security symposium
Static type inference for Ruby
Proceedings of the 2009 ACM symposium on Applied Computing
Finding bugs in exceptional situations of JNI programs
Proceedings of the 16th ACM conference on Computer and communications security
Jinn: synthesizing dynamic bug detectors for foreign language interfaces
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Robusta: taming the native beast of the JVM
Proceedings of the 17th ACM conference on Computer and communications security
DSketch: lightweight, adaptable dependency analysis
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
JNI light: an operational model for the core JNI
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
JET: exception checking in the Java native interface
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Bringing java's wild native world under control
ACM Transactions on Information and System Security (TISSEC)
Hi-index | 0.00 |
We present a multi-lingual type inference system for checking type safety of programs that use the Java Native Interface (JNI). The JNI uses specially-formatted strings to represent class and field names as well as method signatures, and so our type system tracks the flow of string constants through the program. Our system embeds string variables in types, and as those variables are resolved to string constants during inference they are replaced with the structured types the constants represent. This restricted form of dependent types allows us to directly assign type signatures to each of the more than 200 functions in the JNI. Moreover, it allows us to infer types for user-defined functions that are parameterized by Java type strings, which we have found to be common practice. Our inference system allows such functions to be treated polymorphically by using instantiation constraints, solved with semi-unification, at function calls. Finally, we have implemented our system and applied it to a small set of benchmarks. Although semi-unification is undecidable, we found our system to be scalable and effective in practice. We discovered 155 errors and 36 cases of suspicious programming practices in our benchmarks.