@@ -67,12 +67,12 @@ The first time you run this command, Maven will invoke the Phosphor Maven plugin
67
67
Phosphor-instrumented Java installations.
68
68
These instrumented Java installation are cached for future use and will not be recreated unless one of the
69
69
Phosphor JARs, the configuration used to create them, or the value of ` JAVA_HOME ` changes.
70
- Once the Phosphor Maven plugin finishes creating the instrumented Java installations the tests will run.
70
+ Once the Phosphor Maven plugin finishes creating the instrumented Java installations, the tests will run.
71
71
These tests demonstrate how Phosphor can be used and are a good reference when first learning Phosphor.
72
72
73
73
## Creating an Instrumented Java Installation
74
74
75
- In order to track the flow of information through classes in the Java Class Library (JCL), such as ` java.lang.String `
75
+ To track the flow of information through classes in the Java Class Library (JCL), such as ` java.lang.String `
76
76
and ` java.util.List ` , Phosphor must instrument the bytecode of JCL classes.
77
77
Therefore, the first step when using Phosphor is to create an instrumented Java installation
78
78
(i.e., Java Development Kit or Java Runtime Environment).
@@ -83,19 +83,19 @@ Once you have obtained a Java installation, it can be instrumented either using
83
83
We discuss both options below.
84
84
85
85
** Important note on OpenJDK vs Oracle's Java installations:**
86
- Oracle's Java installations requires that the JAR that contains the cryptography routines ` jce.jar ` be signed by
86
+ Oracle's Java installations require that the JAR that contains the cryptography routines ` jce.jar ` be signed by
87
87
Oracle for export control purposes.
88
88
OpenJDK does not.
89
89
Phosphor instrumentation will break these signatures.
90
90
Therefore, it is not possible to use Phosphor with Oracle's Java installation * and* use the cryptography functionality.
91
91
92
92
### Driver
93
93
94
- The Phosphor driver can be used apply Phosphor instrumentation to Java classes in a Java installation,
94
+ The Phosphor driver can be used to apply Phosphor instrumentation to Java classes in a Java installation,
95
95
directory, or archive.
96
96
If you have built Phosphor according to the directions described above in the
97
97
section [ "Building Phosphor"] ( #Building-Phosphor ) , then the driver JAR will be available at
98
- ` phosphor-driver/target/phosphor-driver-0.1.0-SNAPSHOT .jar ` relative to the root of this project.
98
+ ` phosphor-driver/target/phosphor-driver-VERSION .jar ` relative to the root of this project.
99
99
The latest snapshot of the driver JAR is available at the
100
100
[ Sonatype OSS Repository Hosting (OSSRH)] ( https://oss.sonatype.org/content/repositories/snapshots/edu/gmu/swe/phosphor/ ) .
101
101
The driver JAR can also be acquired using the Maven dependency:
@@ -174,7 +174,7 @@ application with Phosphor.
174
174
Locate the JAR for Phosphor's Java agent.
175
175
If you have built Phosphor according to the directions described above in the
176
176
section [ "Building Phosphor"] ( #Building-Phosphor ) , then the agent JAR will be available at
177
- ` Phosphor/target/Phosphor-0.1.0-SNAPSHOT .jar ` relative to the root of this project.
177
+ ` Phosphor/target/Phosphor-VERSION .jar ` relative to the root of this project.
178
178
The latest snapshot of the agent JAR is available at the
179
179
[ Sonatype OSS Repository Hosting (OSSRH)] ( https://oss.sonatype.org/content/repositories/snapshots/edu/gmu/swe/phosphor/ ) .
180
180
The agent JAR can also be acquired using the Maven dependency:
@@ -205,7 +205,7 @@ If running java using the `-jar` option run:
205
205
[ options ] -jar file.jar [ argument ... ]
206
206
```
207
207
208
- Otherwise run:
208
+ Otherwise, run:
209
209
210
210
```
211
211
<INSTRUMENTED-JAVA-HOME>/bin/java \
@@ -221,9 +221,10 @@ Where:
221
221
222
222
## Interacting with Phosphor
223
223
224
- Phosphor exposes a simple API to allow to marking data with tags, and to retrieve those tags. Key functionality is
225
- implemented in `` edu.columbia.cs.psl.phosphor.runtime.MultiTainter `` . To get or set the taint tag of a primitive type,
226
- developers call the taintedX or getTaint(X) method (replacing X with each of the primitive types, e.g. taintedByte,
224
+ Phosphor exposes a simple API to allow data to be labeled with tags, and to retrieve those tags.
225
+ Key functionality is implemented in `` edu.columbia.cs.psl.phosphor.runtime.MultiTainter `` .
226
+ To get or set the taint tag of a primitive type,
227
+ developers call the taintedX or getTaint(X) method (replacing X with each of the primitive types, e.g., taintedByte,
227
228
etc.).
228
229
Ignore the methods ending with the suffix $$PHOSPHOR, they are used internally.
229
230
To get or set the taint tag of an object, first cast that object to the interface TaintedWithObjTag (Phosphor changes
@@ -232,7 +233,7 @@ all classes to implement this interface), and use the get and set methods.
232
233
You can determine if a variable is derived from a particular tainted source by examining the labels on that
233
234
variable's ` Taint ` object.
234
235
235
- You * can* detaint variables with Phosphor - to do so, simply use the ` MultiTainter ` interface to set the taint on a
236
+ You * can* detaint variables with Phosphor - to do so, use the ` MultiTainter ` interface to set the taint on a
236
237
value to ` 0 ` (or ` null ` ).
237
238
238
239
## Notes on control tracking
@@ -248,7 +249,7 @@ functionality. If you are interested in helping, please contact us.
248
249
## Contact
249
250
250
251
Please email [ Jonathan Bell] ( mailto:bellj@gmu.edu ) with comments, suggestions, or questions.
251
- This project is still under development and we welcome any feedback.
252
+ This project is still under development, and we welcome any feedback.
252
253
253
254
## License
254
255
0 commit comments