CBMC
java_class_loader_limitt Class Reference

Class representing a filter for class file loading. More...

#include <java_class_loader_limit.h>

+ Collaboration diagram for java_class_loader_limitt:

Public Member Functions

 java_class_loader_limitt (message_handlert &message_handler, const std::string &java_cp_include_files)
 
bool load_class_file (const std::string &class_file_name)
 Use the class load limiter to decide whether a class file should be loaded or not. More...
 

Private Member Functions

void setup_class_load_limit (const std::string &)
 Initializes class with either regex matcher or match set. More...
 

Private Attributes

messaget log
 
bool use_regex_match
 Whether to use regex_matcher instead of set_matcher. More...
 
std::regex regex_matcher
 
std::set< std::string > set_matcher
 

Detailed Description

Class representing a filter for class file loading.

Definition at line 21 of file java_class_loader_limit.h.

Constructor & Destructor Documentation

◆ java_class_loader_limitt()

java_class_loader_limitt::java_class_loader_limitt ( message_handlert message_handler,
const std::string &  java_cp_include_files 
)
inlineexplicit

Definition at line 33 of file java_class_loader_limit.h.

Member Function Documentation

◆ load_class_file()

bool java_class_loader_limitt::load_class_file ( const std::string &  file_name)

Use the class load limiter to decide whether a class file should be loaded or not.

Parameters
file_namethe name of the class file to load
Returns
true if file should be loaded, else false

Definition at line 89 of file java_class_loader_limit.cpp.

◆ setup_class_load_limit()

void java_class_loader_limitt::setup_class_load_limit ( const std::string &  java_cp_include_files)
private

Initializes class with either regex matcher or match set.

If the string starts with an @ it is treated as a path to a JSON file. Otherwise, it is treated as a regex.

The regex case describes which class files should be loaded in the form of a regular expression used with regex_match.

The match set is a list of files to load in JSON format, the argument is the name of the JSON file, prefixed with @. The file contains one section to list the .jar files to load and one section to list the .class files to load from the .jar.

for example a file called load.json with the following content: { "jar": [ "A.jar", "B.jar" ], "classFiles": [ "jarfile3$A.class", "jarfile3.class" ] } would be specified via --java-cp-include-files @load.json and would instruct the driver to load A.jar and B.jar and the two .class files jarfile3$A.class and jarfile3.class. All the rest of the .jar files is ignored.

Parameters
java_cp_include_filesparameter from java-cp-include-files in the format as described above

Definition at line 50 of file java_class_loader_limit.cpp.

Member Data Documentation

◆ log

messaget java_class_loader_limitt::log
private

Definition at line 23 of file java_class_loader_limit.h.

◆ regex_matcher

std::regex java_class_loader_limitt::regex_matcher
private

Definition at line 27 of file java_class_loader_limit.h.

◆ set_matcher

std::set<std::string> java_class_loader_limitt::set_matcher
private

Definition at line 28 of file java_class_loader_limit.h.

◆ use_regex_match

bool java_class_loader_limitt::use_regex_match
private

Whether to use regex_matcher instead of set_matcher.

Definition at line 26 of file java_class_loader_limit.h.


The documentation for this class was generated from the following files: