The DOI matches its Crossref record.
Finding application errors and security flaws using PQL: a program query language
Abstract
A number of effective error detection tools have been built in recent years to check if a program conforms to certain design rules. An important class of design rules deals with sequences of events asso-ciated with a set of related objects. This paper presents a language called PQL (Program Query Language) that allows programmers to express such questions easily in an application-specific context. A query looks like a code excerpt corresponding to the shortest amount of code that would violate a design rule. Details of the tar-get application's precise implementation are abstracted away. The programmer may also specify actions to perform when a match is found, such as recording relevant information or even correcting an erroneous execution on the fly.We have developed both static and dynamic techniques to find solutions to PQL queries. Our static analyzer finds all potential matches conservatively using a context-sensitive, flow-insensitive, inclusion-based pointer alias analysis. Static results are also use-ful in reducing the number of instrumentation points for dynamic analysis. Our dynamic analyzer instruments the source program to catch all violations precisely as the program runs and to optionally perform user-specified actions.We have implemented the techniques described in this paper and found 206 errors in 6 large real-world open-source Java applica-tions containing a total of nearly 60,000 classes. These errors are important security flaws, resource leaks, and violations of consis-tency invariants. The combination of static and dynamic analysis proves effective at addressing a wide range of debugging and pro-gram comprehension queries. We have found that dynamic analysis is especially suitable for preventing errors such as security vulner-abilities at runtime.
Overview
The claims and statistics of this paper haven’t been checked yet.
Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.
Integrity signals
Registry
Cites
Statistics
Verification
Claims the paper makes
The claims and statistics of this paper haven’t been checked yet.
Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.
Self-check
Percentages, sums and reported differences re-computed from the paper’s own numbers.
The self-check needs the paper’s full text.
Citations
Cited by
AMNESIA: analysis and monitoring for NEutralizing SQL-injection attacks
Halfond, W. G. J., & Orso, A. (2005) · Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering · doi:10.1145/1101908.1101935 · Cited by 527
The essence of command injection attacks in web applications
Su, Z., & Wassermann, G. (2006) · Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages · doi:10.1145/1111037.1111070 · Cited by 515
CrySL: An Extensible Approach to Validating the Correct Usage of Cryptographic APIs
Kruger, S., Spath, J., Ali, K., Bodden, E., & Mezini, M. (2021) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2019.2948910 · Cited by 112
Active Inductive Logic Programming for Code Search
Sivaraman, A., Zhang, T., Van den Broeck, G., & Kim, M. (2019) · 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE) · doi:10.1109/icse.2019.00044 · Cited by 34
Metadata
- Authors
- Martin, M., Livshits, B., & Lam, M. S.
- Venue
- Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
- Publisher
- ACM
- Published
- 2005-10-12
- Pages
- 365-383
- OpenAlex
- W2134429122
- Cited by
- 440
- References
- 0
- FWCI
- 19.58
- Type
- conference paper
- Language
- en
- Open access
- closed
About these checks
Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.
Statistics and arithmetic are recomputed, not judged.
Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.
What counts as a claim ›How we measure confidence ›How we check this ›
Are you an author, or do you see a problem with this page? Request a review
How to cite
Cite CoChat for the checks on this page, and the paper for its own findings.
- This page
- CoChat. (2026). Citation check: Finding application errors and security flaws using PQL: a program query language. https://app.cochat.ai/papers/10.1145/1094811.1094840
- The paper
- Martin, M., Livshits, B., & Lam, M. S. (2005). Finding application errors and security flaws using PQL: a program query language. Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications. https://doi.org/10.1145/1094811.1094840
Data sources
Bibliographic data: Semantic Scholar, OpenAlex, Crossref.
Contains information from the Semantic Scholar Academic Graph Datasets, made available under the ODC Attribution License (ODC-BY 1.0).
Semantic Scholar’s data is described in: Kinney, R., et al. (2023). The Semantic Scholar Open Data Platform. arXiv:2301.10140.