Search in sources :

Example 21 with Taint

use of edu.columbia.cs.psl.phosphor.runtime.Taint in project phosphor by gmu-swe.

the class DroidBenchObjTagITCase method taintedString.

public static String taintedString(String string) {
    Object r = new String(string.toCharArray());
    ((TaintedWithObjTag) r).setPHOSPHOR_TAG(new Taint("Some tainted data " + (++i)));
    return (String) r;
}
Also used : TaintedWithObjTag(edu.columbia.cs.psl.phosphor.struct.TaintedWithObjTag) Taint(edu.columbia.cs.psl.phosphor.runtime.Taint)

Example 22 with Taint

use of edu.columbia.cs.psl.phosphor.runtime.Taint in project phosphor by gmu-swe.

the class GetSetTaintObjTagITCase method testNotBoxing.

@Test
public void testNotBoxing() {
    boolean z = MultiTainter.taintedBoolean(false, new Taint(5));
    byte b = MultiTainter.taintedByte((byte) 4, new Taint(5));
    char c = MultiTainter.taintedChar('a', new Taint(5));
    int i = MultiTainter.taintedInt(4, new Taint(5));
    short s = MultiTainter.taintedShort((short) 5, new Taint(5));
    long l = MultiTainter.taintedLong((long) 5, new Taint(5));
    float f = MultiTainter.taintedFloat(4f, new Taint(5));
    double d = MultiTainter.taintedDouble(4d, new Taint(5));
    assertTrue(MultiTainter.getTaint(z) != null);
    assertTrue(MultiTainter.getTaint(b) != null);
    assertTrue(MultiTainter.getTaint(c) != null);
    assertTrue(MultiTainter.getTaint(i) != null);
    assertTrue(MultiTainter.getTaint(s) != null);
    assertTrue(MultiTainter.getTaint(l) != null);
    assertTrue(MultiTainter.getTaint(f) != null);
    assertTrue(MultiTainter.getTaint(d) != null);
}
Also used : Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Test(org.junit.Test)

Example 23 with Taint

use of edu.columbia.cs.psl.phosphor.runtime.Taint in project phosphor by gmu-swe.

the class GetSetTaintObjTagITCase method testBoxing.

@Test
public void testBoxing() {
    Boolean z = MultiTainter.taintedBoolean(false, new Taint(5));
    Byte b = MultiTainter.taintedByte((byte) 4, new Taint(5));
    Character c = MultiTainter.taintedChar('a', new Taint(5));
    Integer i = MultiTainter.taintedInt(4, new Taint(5));
    Short s = MultiTainter.taintedShort((short) 5, new Taint(5));
    Long l = MultiTainter.taintedLong((long) 5, new Taint(5));
    Float f = MultiTainter.taintedFloat(4f, new Taint(5));
    Double d = MultiTainter.taintedDouble(4d, new Taint(5));
    assertTrue(MultiTainter.getTaint(z.booleanValue()) != null);
    assertTrue(MultiTainter.getTaint(b.byteValue()) != null);
    assertTrue(MultiTainter.getTaint(c.charValue()) != null);
    assertTrue(MultiTainter.getTaint(i.intValue()) != null);
    assertTrue(MultiTainter.getTaint(s.shortValue()) != null);
    assertTrue(MultiTainter.getTaint(f.floatValue()) != null);
    assertTrue(MultiTainter.getTaint(l.longValue()) != null);
    assertTrue(MultiTainter.getTaint(d.doubleValue()) != null);
}
Also used : Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Test(org.junit.Test)

Example 24 with Taint

use of edu.columbia.cs.psl.phosphor.runtime.Taint in project phosphor by gmu-swe.

the class GetSetTaintObjTagITCase method testReferenceType.

@Test
public void testReferenceType() throws Exception {
    String s = "def";
    HashMap<Object, Object> m = new HashMap<Object, Object>();
    MultiTainter.taintedObject(s, new Taint(5));
    ;
    MultiTainter.taintedObject(m, new Taint(5));
    int[] x = new int[10];
    // In its default mode, Phosphor tracks ONLY for the array ELEMENTS - not for the reference
    // can do -withArrayLengthTags to track a tag for the length of the array
    x = MultiTainter.taintedIntArray(x, new Taint(3));
    assertTrue(((TaintedWithObjTag) m).getPHOSPHOR_TAG() != null);
    assertTrue(MultiTainter.getTaint(m) != null);
    assertTrue(MultiTainter.getTaint(s) != null);
    assertTrue(MultiTainter.getTaint(x[0]) != null);
}
Also used : HashMap(java.util.HashMap) TaintedWithObjTag(edu.columbia.cs.psl.phosphor.struct.TaintedWithObjTag) Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Test(org.junit.Test)

Example 25 with Taint

use of edu.columbia.cs.psl.phosphor.runtime.Taint in project phosphor by gmu-swe.

the class GetSetTaintObjTagITCase method testValueOf.

@Test
public void testValueOf() {
    String hundred = new String(new char[] { '1', '0', '0' });
    Object lbl = 5;
    String TRUE = new String(new char[] { 't', 'r', 'u', 'e' });
    ((TaintedWithObjTag) ((Object) hundred)).setPHOSPHOR_TAG(new Taint(lbl));
    ((TaintedWithObjTag) ((Object) TRUE)).setPHOSPHOR_TAG(new Taint(lbl));
    boolean z = Boolean.parseBoolean(TRUE);
    byte b = Byte.valueOf(hundred);
    byte b2 = Byte.parseByte(hundred);
    byte b3 = Byte.parseByte(hundred, 10);
    int i = Integer.valueOf(hundred);
    int i2 = Integer.valueOf(hundred, 10);
    int i3 = Integer.parseInt(hundred);
    int i4 = Integer.parseInt(hundred, 10);
    int i5 = Integer.parseUnsignedInt(hundred);
    int i6 = Integer.parseUnsignedInt(hundred, 10);
    short s = Short.parseShort(hundred);
    short s2 = Short.parseShort(hundred, 10);
    short s3 = Short.valueOf(hundred);
    short s4 = Short.valueOf(hundred, 10);
    long l = Long.valueOf(hundred);
    long l2 = Long.valueOf(hundred, 10);
    long l3 = Long.parseLong(hundred);
    long l4 = Long.parseLong(hundred, 10);
    long l5 = Long.parseUnsignedLong(hundred);
    long l6 = Long.parseUnsignedLong(hundred, 10);
    float f = Float.parseFloat(hundred);
    float f2 = Float.valueOf(hundred);
    double d = Double.parseDouble(hundred);
    double d2 = Double.valueOf(hundred);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(z), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(b), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(b2), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(b3), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(i), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(i2), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(i3), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(i4), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(i5), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(i6), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(s), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(s2), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(s3), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(s4), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(l), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(l2), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(l3), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(l4), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(l5), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(l6), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(f), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(f2), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(d), lbl);
    assertTaintHasOnlyLabel(MultiTainter.getTaint(d2), lbl);
}
Also used : TaintedWithObjTag(edu.columbia.cs.psl.phosphor.struct.TaintedWithObjTag) Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Test(org.junit.Test)

Aggregations

Taint (edu.columbia.cs.psl.phosphor.runtime.Taint)30 Test (org.junit.Test)20 TaintedWithObjTag (edu.columbia.cs.psl.phosphor.struct.TaintedWithObjTag)7 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)1