- Bug report: this should be fixed.
This commit is contained in:
parent
16a59624fe
commit
2b9246bb64
@ -14,6 +14,7 @@
|
||||
#include "specialterm.h"
|
||||
#include "warshall.h"
|
||||
#include "hidelevel.h"
|
||||
#include "debug.h"
|
||||
|
||||
/*
|
||||
Simple sys pointer as a global. Yields cleaner code although it's against programming standards.
|
||||
|
59
src/dotout.c
59
src/dotout.c
@ -5,6 +5,7 @@
|
||||
#include "arachne.h"
|
||||
#include "binding.h"
|
||||
#include "depend.h"
|
||||
#include "debug.h"
|
||||
|
||||
extern Protocol INTRUDER; // Pointers, to be set by the Init of arachne.c
|
||||
extern Role I_M; // Same here.
|
||||
@ -1128,64 +1129,6 @@ drawIntruderChoices (const System sys)
|
||||
termlistDelete (shown);
|
||||
}
|
||||
|
||||
//! Ranking info
|
||||
void
|
||||
showRanks (const System sys, int maxrank, int *ranks)
|
||||
{
|
||||
// Fourth, all ranking info
|
||||
int myrank;
|
||||
|
||||
#ifdef DEBUG
|
||||
{
|
||||
int n;
|
||||
|
||||
eprintf ("/* ranks: %i\n", maxrank);
|
||||
n = 0;
|
||||
while (n < nodes)
|
||||
{
|
||||
eprintf ("%i ", ranks[n]);
|
||||
n++;
|
||||
}
|
||||
eprintf ("\n*/\n\n");
|
||||
}
|
||||
#endif
|
||||
myrank = 0;
|
||||
while (myrank < maxrank)
|
||||
{
|
||||
int count;
|
||||
int run;
|
||||
int run1;
|
||||
int ev1;
|
||||
|
||||
count = 0;
|
||||
run = 0;
|
||||
while (run < sys->maxruns)
|
||||
{
|
||||
if (sys->runs[run].protocol != INTRUDER)
|
||||
{
|
||||
int ev;
|
||||
|
||||
ev = 0;
|
||||
while (ev < sys->runs[run].step)
|
||||
{
|
||||
if (myrank == ranks[eventNode (run, ev)])
|
||||
{
|
||||
if (count == 0)
|
||||
eprintf ("\t{ rank = same; ");
|
||||
count++;
|
||||
eprintf ("r%ii%i; ", run, ev);
|
||||
}
|
||||
ev++;
|
||||
}
|
||||
}
|
||||
run++;
|
||||
}
|
||||
if (count > 0)
|
||||
eprintf ("}\t\t// rank %i\n", myrank);
|
||||
myrank++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Display the current semistate using dot output format.
|
||||
/**
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <limits.h>
|
||||
#include "hidelevel.h"
|
||||
#include "system.h"
|
||||
#include "debug.h"
|
||||
|
||||
extern Term TERM_Hidden;
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "substitution.h"
|
||||
#include "mgu.h"
|
||||
#include "type.h"
|
||||
#include "debug.h"
|
||||
#include "specialterm.h"
|
||||
|
||||
/*
|
||||
|
25
src/problem.spdl
Normal file
25
src/problem.spdl
Normal file
@ -0,0 +1,25 @@
|
||||
// BAN modified version of the yahalom protocol
|
||||
// Type flaw
|
||||
|
||||
usertype Server;
|
||||
|
||||
const a,b,c : Agent;
|
||||
const s : Server;
|
||||
secret k : Function;
|
||||
|
||||
protocol yahalomBan(A,B,S)
|
||||
{
|
||||
role B
|
||||
{
|
||||
const nb;
|
||||
var na;
|
||||
var kab;
|
||||
|
||||
read_1(A,B, A,na,B,S);
|
||||
send_2(B,S, B,nb, {A,na}k(B,S) );
|
||||
read_4(A,B, {A,kab,nb}k(B,S) , {nb}kab );
|
||||
claim_6(B, Secret,kab);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,13 +78,19 @@ correctLocalOrder (const System sys)
|
||||
}
|
||||
else
|
||||
{
|
||||
// not a read first?
|
||||
// not a read first? That's definitely impossible (can be caused by choices
|
||||
globalError++;
|
||||
eprintf ("Error: term ");
|
||||
termSubstPrint (t);
|
||||
eprintf
|
||||
(" from run %i should occur in run %i first in a READ event, but it occurs first in another event.\n",
|
||||
r2, r1);
|
||||
(" from run %i should occur in run %i first in a READ event, but it occurs first in event %i.\n",
|
||||
r2, r1, e1);
|
||||
eprintf ("It occurs first in ");
|
||||
roledefPrint (eventRoledef (sys, r1, e1));
|
||||
eprintf ("\n");
|
||||
eprintf ("which starts with ");
|
||||
roledefPrint (eventRoledef (sys, r1, 0));
|
||||
eprintf ("\n");
|
||||
globalError--;
|
||||
error ("Abort");
|
||||
}
|
||||
|
@ -93,11 +93,9 @@ systemReset (const System sys)
|
||||
|
||||
/* some initial counters */
|
||||
sys->states = statesIncrease (STATES0); //!< Initial state is not explored, so start counting at 1
|
||||
sys->statesScenario = STATES0;
|
||||
sys->interval = sys->states; //!< To keep in line with the states
|
||||
sys->claims = STATES0;
|
||||
sys->failed = STATES0;
|
||||
sys->countScenario = 0;
|
||||
sys->explore = 1; // do explore the space
|
||||
cl = sys->claimlist;
|
||||
while (cl != NULL)
|
||||
@ -136,12 +134,6 @@ systemRuns (const System sys)
|
||||
sys->lastChooseRun = run;
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
if (switches.scenario < 0)
|
||||
{
|
||||
warning ("Last run with a choose: %i", sys->lastChooseRun);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//! Delete a system structure and clear used memory for all buffers.
|
||||
|
Loading…
Reference in New Issue
Block a user