use of edu.columbia.cs.psl.phosphor.struct.LazyByteArrayIntTags in project phosphor by gmu-swe.
the class ArrayReflectionMasker method newInstance.
public static Object newInstance(Class clazz, int len) {
Class tmp = clazz;
int dims = 0;
while (tmp.isArray()) {
tmp = tmp.getComponentType();
dims++;
}
if (tmp.isPrimitive()) {
if (dims == 0) {
if (tmp == Double.TYPE)
return new LazyDoubleArrayIntTags(new double[len]);
if (tmp == Float.TYPE)
return new LazyFloatArrayIntTags(new float[len]);
if (tmp == Integer.TYPE)
return new LazyIntArrayIntTags(new int[len]);
if (tmp == Long.TYPE)
return new LazyLongArrayIntTags(new long[len]);
if (tmp == Short.TYPE)
return new LazyShortArrayIntTags(new short[len]);
if (tmp == Boolean.TYPE)
return new LazyBooleanArrayIntTags(new boolean[len]);
if (tmp == Byte.TYPE)
return new LazyByteArrayIntTags(new byte[len]);
if (tmp == Character.TYPE)
return new LazyCharArrayIntTags(new char[len]);
} else
clazz = MultiDTaintedArrayWithIntTag.getUnderlyingBoxClassForUnderlyingClass(clazz);
}
return Array.newInstance(clazz, len);
}
use of edu.columbia.cs.psl.phosphor.struct.LazyByteArrayIntTags in project phosphor by gmu-swe.
the class ArrayReflectionMasker method setByte$$PHOSPHORTAGGED.
public static void setByte$$PHOSPHORTAGGED(Object obj, int idxtaint, int idx, int taint, byte val) {
if (obj instanceof LazyByteArrayIntTags) {
LazyByteArrayIntTags a = (LazyByteArrayIntTags) obj;
a.set(null, idx, taint, val);
} else
throw new ArrayStoreException("Called setX, but don't have tainted X array!, got " + obj.getClass());
}
use of edu.columbia.cs.psl.phosphor.struct.LazyByteArrayIntTags in project phosphor by gmu-swe.
the class UninstArrayReflectionMasker method setByte$$PHOSPHORTAGGED.
public static void setByte$$PHOSPHORTAGGED(Object obj, int idxtaint, int idx, int taint, byte val) {
if (obj instanceof LazyByteArrayIntTags) {
LazyByteArrayIntTags a = (LazyByteArrayIntTags) obj;
a.set(null, idx, taint, val);
} else
throw new ArrayStoreException("Called setX, but don't have tainted X array!, got " + obj.getClass());
}
use of edu.columbia.cs.psl.phosphor.struct.LazyByteArrayIntTags in project phosphor by gmu-swe.
the class UninstArrayReflectionMasker method newInstance$$PHOSPHORTAGGED.
public static Object newInstance$$PHOSPHORTAGGED(Class clazz, int lenTaint, int len) {
Class tmp = clazz;
int dims = 0;
while (tmp.isArray()) {
tmp = tmp.getComponentType();
dims++;
}
if (tmp.isPrimitive()) {
// else
if (dims == 0) {
if (tmp == Double.TYPE)
return new LazyDoubleArrayIntTags(new double[len]);
if (tmp == Float.TYPE)
return new LazyFloatArrayIntTags(new float[len]);
if (tmp == Integer.TYPE)
return new LazyIntArrayIntTags(new int[len]);
if (tmp == Long.TYPE)
return new LazyLongArrayIntTags(new long[len]);
if (tmp == Short.TYPE)
return new LazyShortArrayIntTags(new short[len]);
if (tmp == Boolean.TYPE)
return new LazyBooleanArrayIntTags(new boolean[len]);
if (tmp == Byte.TYPE)
return new LazyByteArrayIntTags(new byte[len]);
if (tmp == Character.TYPE)
return new LazyCharArrayIntTags(new char[len]);
} else
clazz = MultiDTaintedArrayWithIntTag.getUnderlyingBoxClassForUnderlyingClass(clazz);
}
return Array.newInstance(clazz, len);
}
use of edu.columbia.cs.psl.phosphor.struct.LazyByteArrayIntTags in project phosphor by gmu-swe.
the class MultiDTaintedArrayWithIntTag method boxIfNecessary.
public static final Object boxIfNecessary(final Object in, final HashSet<Object> includedObjs) {
if (in != null && in.getClass().isArray()) {
Class tmp = in.getClass();
int dims = 0;
while (tmp.isArray()) {
tmp = tmp.getComponentType();
dims++;
}
if (tmp.isPrimitive()) {
// Is prim arraytype
if (dims > 1) {
// this should never be possible.
Type t = Type.getType(in.getClass());
return initWithEmptyTaints((Object[]) in, t.getElementType().getSort(), t.getDimensions());
} else {
if (tmp == Boolean.TYPE)
return new LazyBooleanArrayIntTags((boolean[]) in);
if (tmp == Byte.TYPE)
return new LazyByteArrayIntTags(((byte[]) in));
if (tmp == Character.TYPE)
return new LazyCharArrayIntTags(((char[]) in));
if (tmp == Double.TYPE)
return new LazyDoubleArrayIntTags(((double[]) in));
if (tmp == Float.TYPE)
return new LazyFloatArrayIntTags(((float[]) in));
if (tmp == Integer.TYPE)
return new LazyIntArrayIntTags(((int[]) in));
if (tmp == Long.TYPE)
return new LazyLongArrayIntTags(((long[]) in));
if (tmp == Short.TYPE)
return new LazyShortArrayIntTags(((short[]) in));
throw new IllegalArgumentException();
}
} else if (in.getClass().getComponentType().getName().equals("java.lang.Object")) {
TaintedBooleanWithIntTag tmpRet = new TaintedBooleanWithIntTag();
Object[] _in = (Object[]) in;
for (int i = 0; i < _in.length; i++) {
if (includedObjs.add$$PHOSPHORTAGGED(_in[i], tmpRet).val)
_in[i] = boxIfNecessary(_in[i], includedObjs);
}
}
}
return in;
}
Aggregations