Search in sources :

Example 1 with Taint

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

the class TaintUtils method enumValueOf.

public static <T extends Enum<T>> T enumValueOf(Class<T> enumType, String name, ControlTaintTagStack ctrl) {
    T ret = Enum.valueOf(enumType, name);
    Taint tag = (Taint) ((TaintedWithObjTag) ((Object) name)).getPHOSPHOR_TAG();
    tag = Taint.combineTags(tag, ctrl);
    if (tag != null && !(tag.getLabel() == null && tag.hasNoDependencies())) {
        ret = shallowClone(ret);
        ((TaintedWithObjTag) ret).setPHOSPHOR_TAG(tag);
    }
    return ret;
}
Also used : TaintedWithObjTag(edu.columbia.cs.psl.phosphor.struct.TaintedWithObjTag) Taint(edu.columbia.cs.psl.phosphor.runtime.Taint)

Example 2 with Taint

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

the class DroidBenchObjTagITCase method testImplicitFlow2.

@Test(expected = java.lang.AssertionError.class)
public void testImplicitFlow2() {
    String userInputPassword = taintedString("superSecure");
    if (userInputPassword.equals("superSecure"))
        passwordCorrect = true;
    Taint taint = MultiTainter.getTaint(passwordCorrect);
    assertTrue(MultiTainter.getTaint(passwordCorrect) != null && (MultiTainter.getTaint(passwordCorrect).lbl != null || !MultiTainter.getTaint(passwordCorrect).hasNoDependencies()));
}
Also used : Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Test(org.junit.Test)

Example 3 with Taint

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

the class DroidBenchObjTagITCase method assertNoTaint.

public static void assertNoTaint(String obj) {
    Taint taint = MultiTainter.getTaint(obj.toCharArray()[0]);
    if (taint == null) {
        return;
    }
    if (taint.lbl == null && taint.hasNoDependencies())
        return;
    fail("Expected null taint. Got: " + taint);
}
Also used : Taint(edu.columbia.cs.psl.phosphor.runtime.Taint)

Example 4 with Taint

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

the class EnumObjTagITCase method testEnumFlow.

@Test
public void testEnumFlow() throws Exception {
    String s = "abcd";
    MultiTainter.taintedObject(s, new Taint("foo"));
    assertEquals("foo", MultiTainter.getTaint(s).lbl);
    Dummy x = Dummy.a;
    Dummy y = Dummy.valueOf(s);
    assertEquals("foo", MultiTainter.getTaint(y).lbl);
    assertSame(y, Dummy.abcd);
}
Also used : Taint(edu.columbia.cs.psl.phosphor.runtime.Taint) Test(org.junit.Test)

Example 5 with Taint

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

the class DroidBenchImplicitITCase method testImplicitFlow2p2.

public void testImplicitFlow2p2() {
    boolean passwordCorrect = false;
    String userInputPassword = taintedString("superSecure");
    if (userInputPassword.equals("superSecure"))
        passwordCorrect = true;
    Taint taint = MultiTainter.getTaint(passwordCorrect);
    assertTrue(MultiTainter.getTaint(passwordCorrect) != null && (MultiTainter.getTaint(passwordCorrect).lbl != null || !MultiTainter.getTaint(passwordCorrect).hasNoDependencies()));
}
Also used : Taint(edu.columbia.cs.psl.phosphor.runtime.Taint)

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