#listener=gov.nasa.jpf.listener.StateReducer
#listener=gov.nasa.jpf.listener.StateReducerOld
#listener=gov.nasa.jpf.listener.VariableConflictTracker,gov.nasa.jpf.listener.StateReducer
-listener=gov.nasa.jpf.listener.ConflictTracker
+listener=gov.nasa.jpf.listener.ConflictTracker,gov.nasa.jpf.listener.StateReducer
# Potentially conflicting variables
# Alarms
# Potentially conflicting apps (we default to App1 and App2 for now)
apps=App1,App2
-# Writer classes with manual input to detect direct-direct interactions
-manualClasses=appTouch,AeonKeyFob,Button,NfcTouch,ThreeAxis
-
# Tracking the location.mode variable conflict
#track_location_var_conflict=true
appSet.add(var);
}
}
- String[] manualClasses = config.getStringArray("manualClasses");
- // We are not tracking anything if it is null
- if (manualClasses != null) {
- for (String var : manualClasses) {
- manualSet.add(var);
- }
- }
// Timeout input from config is in minutes, so we need to convert into millis
timeout = config.getInt("timeout", 0) * 60 * 1000;
lo = frame.peek();
hi = frame.getTopPos() >= 1 ? frame.peek(1) : 0;
-
+
return(decodeValue(type, lo, hi));
}
if (ci.getName().equals("java.lang.String"))
return('"' + ei.asString() + '"');
-
+
return(ei.toString());
default:
if (executedInsn instanceof WriteInstruction) {
String varId = ((WriteInstruction) executedInsn).getFieldInfo().getFullName();
+ // Check if we have an update to isManualTransaction to update manual field
+ if (varId.contains("isManualTransaction")) {
+ byte type = getType(ti, executedInsn);
+ String value = getValue(ti, executedInsn, type);
+
+ manual = (value.equals("true"))?true:false;
+ }
+
for (String var : conflictSet) {
if (varId.contains(var)) {
// Get variable info
if (writer == null)
return;
- //if (getWriter(ti.getStack(), manualSet) != null)
- // manual = true;
-
// Update the current updates
writeWriterAndValue(writer, var, value);
}