- Reindented everything, so the layout is up to date again.

This commit is contained in:
ccremers 2004-08-09 10:05:58 +00:00
parent 4d1362cb1b
commit 71c658051e
33 changed files with 899 additions and 803 deletions

View File

@ -14,7 +14,8 @@ int cTod = 0;
*@param tb The attack buffer.
*@param ev The reference event index.
*/
void markback(const System sys, struct tracebuf *tb, int ev)
void
markback (const System sys, struct tracebuf *tb, int ev)
{
int run = tb->run[ev];
@ -53,7 +54,8 @@ void markback(const System sys, struct tracebuf *tb, int ev)
}
//! Minimize the attack.
void attackMinimize(const System sys, struct tracebuf *tb)
void
attackMinimize (const System sys, struct tracebuf *tb)
{
int i;
int j;

View File

@ -20,7 +20,8 @@
#ifdef OKIDEBUG
int indac = 0;
void indact ()
void
indact ()
{
int i;
@ -48,8 +49,7 @@ events_match (const System sys, const int i, const int j)
isTermEqual (rdi->from, rdj->from) &&
isTermEqual (rdi->to, rdj->to) &&
isTermEqual (rdi->label, rdj->label) &&
!(rdi->internal || rdj->internal)
)
!(rdi->internal || rdj->internal))
{
if (rdi->type == SEND && rdj->type == READ)
{
@ -99,7 +99,8 @@ oki_nisynch_full (const System sys, const Termmap label_to_index)
//! Evaluate claims or internal reads (chooses)
__inline__ int
oki_nisynch_other (const System sys, const int trace_index, const Termmap role_to_run, const Termmap label_to_index)
oki_nisynch_other (const System sys, const int trace_index,
const Termmap role_to_run, const Termmap label_to_index)
{
int result;
@ -119,7 +120,8 @@ oki_nisynch_other (const System sys, const int trace_index, const Termmap role_t
//! Evaluate reads
__inline__ int
oki_nisynch_read (const System sys, const int trace_index, const Termmap role_to_run, const Termmap label_to_index)
oki_nisynch_read (const System sys, const int trace_index,
const Termmap role_to_run, const Termmap label_to_index)
{
/*
* Read is only relevant for already involved runs, and labels in prec
@ -144,13 +146,16 @@ oki_nisynch_read (const System sys, const int trace_index, const Termmap role_to
int result;
label_to_index_buf = termmapDuplicate (label_to_index);
label_to_index_buf = termmapSet (label_to_index_buf, rd->label, trace_index);
label_to_index_buf =
termmapSet (label_to_index_buf, rd->label, trace_index);
#ifdef OKIDEBUG
indact ();
printf ("Exploring because this (read) run is involved.\n");
indac++;
#endif
result = oki_nisynch (sys, trace_index-1, role_to_run, label_to_index_buf);
result =
oki_nisynch (sys, trace_index - 1, role_to_run,
label_to_index_buf);
#ifdef OKIDEBUG
indact ();
printf (">%i<\n", result);
@ -178,7 +183,8 @@ oki_nisynch_read (const System sys, const int trace_index, const Termmap role_to
//! Evaluate sends
__inline__ int
oki_nisynch_send (const System sys, const int trace_index, const Termmap role_to_run, const Termmap label_to_index)
oki_nisynch_send (const System sys, const int trace_index,
const Termmap role_to_run, const Termmap label_to_index)
{
Roledef rd;
int rid;
@ -241,15 +247,20 @@ oki_nisynch_send (const System sys, const int trace_index, const Termmap role_to
role_to_run_buf = termmapDuplicate (role_to_run);
role_to_run_buf = termmapSet (role_to_run_buf, rolename, rid);
label_to_index_buf = termmapDuplicate (label_to_index);
label_to_index_buf = termmapSet (label_to_index_buf, rd->label, LABEL_GOOD);
label_to_index_buf =
termmapSet (label_to_index_buf, rd->label, LABEL_GOOD);
#ifdef OKIDEBUG
indact ();
printf ("In NI-Synch scan, assuming %i run is involved.\n", rid);
printf ("In NI-Synch scan, assuming %i run is involved.\n",
rid);
indact ();
printf ("Exploring further assuming this matching, which worked.\n");
printf
("Exploring further assuming this matching, which worked.\n");
indac++;
#endif
result = oki_nisynch (sys, trace_index-1, role_to_run_buf, label_to_index_buf);
result =
oki_nisynch (sys, trace_index - 1, role_to_run_buf,
label_to_index_buf);
#ifdef OKIDEBUG
indact ();
printf (">%i<\n", result);
@ -274,7 +285,8 @@ oki_nisynch_send (const System sys, const int trace_index, const Termmap role_to
*@returns 1 iff the claim is allright, 0 iff it is violated.
*/
int
oki_nisynch (const System sys, const int trace_index, const Termmap role_to_run, const Termmap label_to_index)
oki_nisynch (const System sys, const int trace_index,
const Termmap role_to_run, const Termmap label_to_index)
{
int type;
@ -428,4 +440,3 @@ check_claim_niagree (const System sys, const int i)
termmapDelete (g);
return result;
}

View File

@ -243,7 +243,8 @@ symbolFind (Symbol s)
}
//! Yield a basic global constant term (we suppose it exists) or NULL, given a string
Term findGlobalConstant (const char *s)
Term
findGlobalConstant (const char *s)
{
return levelFind (lookup (s), 0);
}
@ -286,7 +287,9 @@ defineUsertype (Tac tcdu)
else
{
/* that's not right! */
error ("Conflicting definitions in usertype definition on line %i.", tc->lineno);
error
("Conflicting definitions in usertype definition on line %i.",
tc->lineno);
}
}
tc = tc->next;
@ -303,7 +306,8 @@ levelTacDeclaration (Tac tc, int isVar)
tscan = tc->t2.tac;
if (!isVar && tscan->next != NULL)
{
error ("Multiple type definition for constant on line %i.", tscan->lineno);
error ("Multiple type definition for constant on line %i.",
tscan->lineno);
}
while (tscan != NULL && tscan->op == TAC_STRING)
{
@ -319,7 +323,8 @@ levelTacDeclaration (Tac tc, int isVar)
{
if (!inTermlist (t->stype, TERM_Type))
{
error ("Non-type constant in type declaration on line %i.", tscan->lineno);
error ("Non-type constant in type declaration on line %i.",
tscan->lineno);
}
}
typetl = termlistAdd (typetl, t);
@ -385,7 +390,8 @@ commEvent (int event, Tac tc)
/* now parse tuple info */
if (trip == NULL || trip->next == NULL)
{
error ("Problem with claim %i event on line %i.", event, tc->lineno);
error ("Problem with claim %i event on line %i.", event,
tc->lineno);
}
fromrole = tacTerm (trip);
claimbig = tacTerm (tacTuple ((trip->next)));
@ -394,8 +400,7 @@ commEvent (int event, Tac tc)
torole = claim;
/* check for ignored claim types */
if (sys->switchClaimToCheck != NULL &&
sys->switchClaimToCheck != claim)
if (sys->switchClaimToCheck != NULL && sys->switchClaimToCheck != claim)
{
/* abort the construction of the node */
return;
@ -426,7 +431,8 @@ commEvent (int event, Tac tc)
msg = deVar (claimbig)->right.op2;
if (tupleCount (msg) != n)
{
error ("Problem with claim tuple unfolding at line %i.", trip->next->lineno);
error ("Problem with claim tuple unfolding at line %i.",
trip->next->lineno);
}
}
@ -462,7 +468,9 @@ commEvent (int event, Tac tc)
{
if (n == 0)
{
error ("Secrecy claim requires a list of terms to be secret on line %i.",trip->next->lineno);
error
("Secrecy claim requires a list of terms to be secret on line %i.",
trip->next->lineno);
}
break;
}
@ -470,7 +478,8 @@ commEvent (int event, Tac tc)
{
if (n != 0)
{
error ("NISYNCH claim requires no parameters at line %i.", trip->next->lineno);
error ("NISYNCH claim requires no parameters at line %i.",
trip->next->lineno);
}
break;
}
@ -478,7 +487,8 @@ commEvent (int event, Tac tc)
{
if (n != 0)
{
error ("NIAGREE claim requires no parameters at line %i.", trip->next->lineno);
error ("NIAGREE claim requires no parameters at line %i.",
trip->next->lineno);
}
break;
}
@ -518,7 +528,8 @@ normalDeclaration (Tac tc)
knowledgeAddTermlist (sys->know, tacTermlist (tc->t1.tac));
break;
case TAC_INVERSEKEYS:
knowledgeAddInverse (sys->know, tacTerm (tc->t1.tac), tacTerm (tc->t2.tac));
knowledgeAddInverse (sys->know, tacTerm (tc->t1.tac),
tacTerm (tc->t2.tac));
break;
default:
/* abort with false */
@ -807,21 +818,18 @@ compute_prec_sets (const System sys)
Claimlist cl;
// Assist: compute index from role, lev
int
index (int r, int lev)
int index (int r, int lev)
{
return r * sys->roleeventmax + lev;
}
// Assist: compute matrix index from i*i
int
index2 (int i1, int i2)
int index2 (int i1, int i2)
{
return i1 * size + i2;
}
// Assist: yield roledef from r, lev
Roledef
roledef_re (int r, int lev)
Roledef roledef_re (int r, int lev)
{
Protocol pr;
Role ro;
@ -863,8 +871,7 @@ compute_prec_sets (const System sys)
}
// Assist: print matrix
void
show_matrix (void)
void show_matrix (void)
{
int r1, r2, ev1, ev2;
@ -881,7 +888,8 @@ compute_prec_sets (const System sys)
ev2 = 0;
while (ev2 < sys->roleeventmax)
{
printf ("%i ", prec[index2 (index (r2,ev2), index (r1, ev1))]);
printf ("%i ",
prec[index2 (index (r2, ev2), index (r1, ev1))]);
ev2++;
}
printf (" ");
@ -969,7 +977,8 @@ compute_prec_sets (const System sys)
Roledef rd2;
rd2 = roledef_re (r2, ev2);
if (rd2 != NULL && rd2->type == READ && isTermEqual(rd1->label, rd2->label))
if (rd2 != NULL && rd2->type == READ
&& isTermEqual (rd1->label, rd2->label))
{
prec[index2 (index (r1, ev1), index (r2, ev2))] = 1;
}
@ -1039,15 +1048,18 @@ compute_prec_sets (const System sys)
r1++;
}
}
while (r1 < sys->rolecount && !isTermEqual (label, eventlabels[index(r1,ev1)]));
while (r1 < sys->rolecount
&& !isTermEqual (label, eventlabels[index (r1, ev1)]));
if (r1 == sys->rolecount)
{
error ("Prec() setup: Could not find the event corresponding to a claim label.");
error
("Prec() setup: Could not find the event corresponding to a claim label.");
}
rd = roledef_re (r1, ev1);
if (rd->type != CLAIM)
{
error ("Prec() setup: First event with claim label doesn't seem to be a claim.");
error
("Prec() setup: First event with claim label doesn't seem to be a claim.");
}
// Store in claimlist structure
cl->r = r1;
@ -1096,7 +1108,8 @@ compute_prec_sets (const System sys)
tl_scan = cl->prec;
while (tl_scan != NULL)
{
sys->synchronising_labels = termlistAddNew (sys->synchronising_labels, tl_scan->term);
sys->synchronising_labels =
termlistAddNew (sys->synchronising_labels, tl_scan->term);
tl_scan = tl_scan->next;
}
}
@ -1125,7 +1138,8 @@ compute_prec_sets (const System sys)
while (ev_scan < sys->roleeventmax)
{
// if this event preceds the claim, replace the label term
if (prec[index2 (index (r_scan, ev_scan), claim_index)] == 1)
if (prec[index2 (index (r_scan, ev_scan), claim_index)]
== 1)
{
Roledef rd;
@ -1140,7 +1154,8 @@ compute_prec_sets (const System sys)
// Store only the last label
if (t_buf != NULL)
{
sys->synchronising_labels = termlistAddNew(sys->synchronising_labels, t_buf);
sys->synchronising_labels =
termlistAddNew (sys->synchronising_labels, t_buf);
}
}
r_scan++;
@ -1153,14 +1168,16 @@ compute_prec_sets (const System sys)
{
termlistDelete (sys->synchronising_labels);
sys->synchronising_labels = NULL;
warning ("Emptied synchronising labels set manually because --pp=100.");
warning
("Emptied synchronising labels set manually because --pp=100.");
}
#endif
// Check for empty stuff
//@todo This is for debugging, mainly.
if (cl->prec == NULL)
{
fprintf (stderr, "Warning: claim with empty prec() set at r:%i, ev:%i\n",
fprintf (stderr,
"Warning: claim with empty prec() set at r:%i, ev:%i\n",
r1, ev1);
}
else

View File

@ -285,7 +285,8 @@ inKnowledge (const Knowledge know, Term term)
if (term->type == ENCRYPT)
{
return inTermlist (know->encrypt, term) ||
(inKnowledge (know, term->right.key) && inKnowledge (know, term->left.op));
(inKnowledge (know, term->right.key)
&& inKnowledge (know, term->left.op));
}
if (term->type == TUPLE)
{
@ -440,7 +441,8 @@ knowledgeGetInverses (const Knowledge know)
__inline__ Termlist
knowledgeGetBasics (const Knowledge know)
{
return termlistAddBasics (termlistAddBasics(NULL, know->basic), know->encrypt);
return termlistAddBasics (termlistAddBasics (NULL, know->basic),
know->encrypt);
}
//! check whether any substitutions where made in a knowledge set.

View File

@ -1044,7 +1044,8 @@ attackDisplayLatex (const System sys)
if (tb->link[i] != -1 && i < tb->length)
{
latexMessagePrintHighlight (tb, i, tb->link[i], highlights);
latexMessagePrintHighlight (tb, i, tb->link[i],
highlights);
}
else
{

View File

@ -82,13 +82,16 @@ main (int argc, char **argv)
{
System sys;
struct arg_file *infile = arg_file0(NULL,NULL,"FILE", "input file ('-' for stdin)");
struct arg_file *outfile = arg_file0("o","output","FILE", "output file (default is stdout)");
struct arg_str *switch_check = arg_str0(NULL,"check","CLAIM","claim type to check (default is all)");
struct arg_int *switch_scenario =
arg_int0 ("s", "scenario", NULL, "select a scenario instance 1-n (-1 to count)");
struct arg_int *switch_scenario_size =
arg_int0 ("S", "scenario-size", NULL, "scenario size (fixed trace prefix length)");
struct arg_file *infile =
arg_file0 (NULL, NULL, "FILE", "input file ('-' for stdin)");
struct arg_file *outfile = arg_file0 ("o", "output", "FILE",
"output file (default is stdout)");
struct arg_str *switch_check = arg_str0 (NULL, "check", "CLAIM",
"claim type to check (default is all)");
struct arg_int *switch_scenario = arg_int0 ("s", "scenario", NULL,
"select a scenario instance 1-n (-1 to count)");
struct arg_int *switch_scenario_size = arg_int0 ("S", "scenario-size", NULL,
"scenario size (fixed trace prefix length)");
struct arg_int *switch_traversal_method = arg_int0 ("t", "traverse", NULL,
"set traversal method, partial order reduction (default is 12)");
struct arg_int *switch_match_method =
@ -97,30 +100,47 @@ main (int argc, char **argv)
arg_lit0 ("c", "cl", "use constraint logic, non-associative");
struct arg_int *switch_pruning_method = arg_int0 ("p", "prune", NULL,
"pruning method (default is 2)");
struct arg_int *switch_prune_trace_length = arg_int0 ("l", "max-length", NULL,
struct arg_int *switch_prune_trace_length =
arg_int0 ("l", "max-length", NULL,
"prune traces longer than <int> events");
struct arg_lit *switch_incremental_trace_length = arg_lit0 (NULL, "increment-traces",
struct arg_lit *switch_incremental_trace_length =
arg_lit0 (NULL, "increment-traces",
"incremental search using the length of the traces.");
struct arg_int *switch_maximum_runs =
arg_int0 ("r", "max-runs", NULL, "create at most <int> runs");
struct arg_lit *switch_incremental_runs = arg_lit0 (NULL, "increment-runs",
"incremental search using the number of runs");
struct arg_lit *switch_latex_output = arg_lit0 (NULL, "latex", "output attacks in LaTeX format");
struct arg_lit *switch_latex_output =
arg_lit0 (NULL, "latex", "output attacks in LaTeX format");
struct arg_lit *switch_empty =
arg_lit0 ("e", "empty", "do not generate output");
struct arg_lit *switch_progress_bar = arg_lit0 ("b", "progress-bar", "show progress bar");
struct arg_lit *switch_state_space_graph = arg_lit0 (NULL, "state-space", "output state space graph");
struct arg_lit *switch_implicit_choose = arg_lit0 (NULL, "implicit-choose", "allow implicit choose events (useful for few runs)");
struct arg_lit *switch_choose_first = arg_lit0 (NULL, "choose-first", "priority to any choose events");
struct arg_lit *switch_enable_read_symmetries = arg_lit0 (NULL, "read-symm", "enable read symmetry reductions");
struct arg_lit *switch_disable_agent_symmetries = arg_lit0 (NULL, "no-agent-symm", "disable agent symmetry reductions");
struct arg_lit *switch_enable_symmetry_order = arg_lit0 (NULL, "symm-order", "enable ordering symmetry reductions");
struct arg_lit *switch_disable_noclaims_reductions = arg_lit0 (NULL, "no-noclaims-red", "disable no more claims reductions");
struct arg_lit *switch_disable_endgame_reductions = arg_lit0 (NULL, "no-endgame-red", "disable endgame reductions");
struct arg_lit *switch_summary = arg_lit0 (NULL, "summary", "show summary on stdout instead of stderr");
struct arg_lit *switch_echo = arg_lit0 ("E", "echo", "echo command line to stdout");
struct arg_lit *switch_progress_bar =
arg_lit0 ("b", "progress-bar", "show progress bar");
struct arg_lit *switch_state_space_graph =
arg_lit0 (NULL, "state-space", "output state space graph");
struct arg_lit *switch_implicit_choose = arg_lit0 (NULL, "implicit-choose",
"allow implicit choose events (useful for few runs)");
struct arg_lit *switch_choose_first =
arg_lit0 (NULL, "choose-first", "priority to any choose events");
struct arg_lit *switch_enable_read_symmetries =
arg_lit0 (NULL, "read-symm", "enable read symmetry reductions");
struct arg_lit *switch_disable_agent_symmetries =
arg_lit0 (NULL, "no-agent-symm",
"disable agent symmetry reductions");
struct arg_lit *switch_enable_symmetry_order = arg_lit0 (NULL, "symm-order",
"enable ordering symmetry reductions");
struct arg_lit *switch_disable_noclaims_reductions =
arg_lit0 (NULL, "no-noclaims-red",
"disable no more claims reductions");
struct arg_lit *switch_disable_endgame_reductions =
arg_lit0 (NULL, "no-endgame-red", "disable endgame reductions");
struct arg_lit *switch_summary = arg_lit0 (NULL, "summary",
"show summary on stdout instead of stderr");
struct arg_lit *switch_echo =
arg_lit0 ("E", "echo", "echo command line to stdout");
#ifdef DEBUG
struct arg_int *switch_por_parameter = arg_int0 (NULL, "pp", NULL, "POR parameter");
struct arg_int *switch_por_parameter =
arg_int0 (NULL, "pp", NULL, "POR parameter");
struct arg_lit *switch_debug_indent = arg_lit0 ("I", "debug-indent",
"indent the debug output using trace length");
struct arg_int *switch_debug_level =
@ -212,7 +232,8 @@ main (int argc, char **argv)
{
printf ("'%s' model checker for security protocols.\n", progname);
printf ("%s release.\n", releasetag);
printf ("$Rev$ $Date$\n");
printf
("$Rev$ $Date$\n");
#ifdef DEBUG
printf ("Compiled with debugging support.\n");
#endif
@ -247,9 +268,11 @@ main (int argc, char **argv)
/* Lutger-tries-to-test-with-broken-methods detector */
if (switch_clp->count > 0)
{
fprintf (stderr, "For the time being, this method is not supported, \n");
fprintf (stderr,
"For the time being, this method is not supported, \n");
fprintf (stderr, "as too many changes have been made to the normal \n");
fprintf (stderr, "matching logic, and CL simply isn't reliable in \nmany ");
fprintf (stderr,
"matching logic, and CL simply isn't reliable in \nmany ");
fprintf (stderr, "ways. Try again in a few weeks.\n");
exit (0);
}
@ -261,7 +284,8 @@ main (int argc, char **argv)
/* try to open */
if (!freopen (outfile->filename[0], "w", stdout))
{
fprintf(stderr, "Could not create output file '%s'.\n", outfile->filename[0]);
fprintf (stderr, "Could not create output file '%s'.\n",
outfile->filename[0]);
exit (1);
}
}
@ -273,7 +297,8 @@ main (int argc, char **argv)
{
if (!freopen (infile->filename[0], "r", stdin))
{
fprintf(stderr, "Could not open input file '%s'.\n", infile->filename[0]);
fprintf (stderr, "Could not open input file '%s'.\n",
infile->filename[0]);
exit (1);
}
}
@ -328,7 +353,8 @@ main (int argc, char **argv)
if (switch_enable_read_symmetries->count > 0)
{
if (switch_enable_symmetry_order->count > 0)
error ("--read-symm and --symm-order cannot be used at the same time.");
error
("--read-symm and --symm-order cannot be used at the same time.");
sys->switchReadSymm = 1;
}
if (switch_enable_symmetry_order->count > 0)
@ -363,11 +389,11 @@ main (int argc, char **argv)
if (sys->switchScenario != 0 && sys->switchScenarioSize == 0)
{
#ifdef DEBUG
warning ("Scenario selection without trace prefix length implies --choose-first.");
warning
("Scenario selection without trace prefix length implies --choose-first.");
#endif
sys->switchChooseFirst = 1;
}
#ifdef DEBUG
sys->porparam = switch_por_parameter->ival[0];
#endif
@ -486,8 +512,7 @@ main (int argc, char **argv)
if (switch_incremental_runs->count > 0 ||
switch_incremental_trace_length->count > 0)
{
if (sys->output != ATTACK &&
sys->output != EMPTY)
if (sys->output != ATTACK && sys->output != EMPTY)
{
error ("Incremental traversal only for empty or attack output.");
}
@ -497,7 +522,6 @@ main (int argc, char **argv)
{
warning ("-m2 is only supported for constraint logic programming.");
}
#ifdef DEBUG
warning ("Selected output method is %i", sys->output);
#endif
@ -740,7 +764,8 @@ MC_incRuns (const System sys)
systemReset (sys);
sys->maxruns = runs;
systemRuns (sys);
fprintf (stderr, "%i of %i runs in incremental runs search.\n", runs, maxruns);
fprintf (stderr, "%i of %i runs in incremental runs search.\n",
runs, maxruns);
res = modelCheck (sys);
fprintf (stderr, "\n");
if (res)
@ -794,7 +819,8 @@ MC_incTraces (const System sys)
systemReset (sys);
sys->maxtracelength = tracelen;
systemRuns (sys);
fprintf (stderr, "%i of %i trace length in incremental trace length search.\n",
fprintf (stderr,
"%i of %i trace length in incremental trace length search.\n",
tracelen, maxtracelen);
res = modelCheck (sys);
fprintf (stderr, "\n");
@ -873,5 +899,3 @@ modelCheck (const System sys)
}
return (sys->failed != STATES0);
}

View File

@ -384,7 +384,8 @@ sendAdd_clp (const System sys, const int run, const Termlist tl)
/* simple case: no variable inside */
knowledgeAddTerm (sys->know, t);
tl2 = termlistShallow (tl->next);
if (inKnowledge (sys->know, invkey) && hasTermVariable (t->left.op))
if (inKnowledge (sys->know, invkey)
&& hasTermVariable (t->left.op))
tl2 = termlistAdd (tl2, t->left.op);
sendAdd_clp (sys, run, tl2);
termlistDelete (tl2);

View File

@ -213,7 +213,8 @@ executeStep (const System sys, const int run)
if (sys->switchS > 0)
{
sys->interval = statesIncrease (sys->interval);
if (!statesSmallerThan (sys->interval, (unsigned long int) sys->switchS))
if (!statesSmallerThan
(sys->interval, (unsigned long int) sys->switchS))
{
globalError++;
sys->interval = STATES0;
@ -227,7 +228,8 @@ executeStep (const System sys, const int run)
/* store new node numbder */
sys->traceNode[sys->step] = sys->states;
/* the construction below always assumes MAX_GRAPH_STATES to be smaller than the unsigned long it, which seems realistic. */
if (sys->output == STATESPACE && statesSmallerThan (sys->states, MAX_GRAPH_STATES))
if (sys->output == STATESPACE
&& statesSmallerThan (sys->states, MAX_GRAPH_STATES))
{
/* display graph */
graphNode (sys);
@ -240,7 +242,8 @@ executeStep (const System sys, const int run)
*
*@todo "What is interesting" relies on the fact that there are only secrecy, sychnr and agreement properties.
*/
Roledef removeIrrelevant (const System sys, const int run, Roledef rd)
Roledef
removeIrrelevant (const System sys, const int run, Roledef rd)
{
Roledef rdkill;
int killclaims;
@ -284,7 +287,8 @@ Roledef removeIrrelevant (const System sys, const int run, Roledef rd)
*\sa tryChoiceSend()
*/
void
unblock_synchronising_labels (const System sys, const int run, const Roledef rd)
unblock_synchronising_labels (const System sys, const int run,
const Roledef rd)
{
if (rd->type != READ || rd->internal)
return;
@ -485,7 +489,8 @@ explorify (const System sys, const int run)
error ("firstNonAgentRead is not a read?!");
}
ridSymm = sys->runs[run].prevSymmRun;
if (isTermlistEqual (sys->runs[run].agents, sys->runs[ridSymm].agents))
if (isTermlistEqual
(sys->runs[run].agents, sys->runs[ridSymm].agents))
{
/* same agents, so relevant */
if (myStep > 0 && sys->runs[ridSymm].step < myStep)
@ -540,7 +545,8 @@ explorify (const System sys, const int run)
ridSymm = sys->runs[run].prevSymmRun;
/* equal runs? */
if (isTermlistEqual (sys->runs[run].agents, sys->runs[ridSymm].agents))
if (isTermlistEqual
(sys->runs[run].agents, sys->runs[ridSymm].agents))
{
/* so, we have an identical partner */
/* is our partner there already? */
@ -567,8 +573,7 @@ explorify (const System sys, const int run)
if (sys->switchScenarioSize == 0)
{
/* only after chooses */
if (myStep == 0 &&
rd->type == READ)
if (myStep == 0 && rd->type == READ)
{
if (run == sys->lastChooseRun)
{
@ -915,9 +920,7 @@ lastActiveRun (const System sys)
__inline__ int
isChooseRoledef (const System sys, const int run, const Roledef rd)
{
return (rd == sys->runs[run].start &&
rd->type == READ &&
rd->internal);
return (rd == sys->runs[run].start && rd->type == READ && rd->internal);
}
//! Explore possible chooses first
@ -1080,7 +1083,8 @@ propertyCheck (const System sys)
{
/* weird, should not occur */
fprintf (stderr, "Violation, but cannot locate claim.\n");
printf("A secrecy claim was supposed to be violated on term ");
printf
("A secrecy claim was supposed to be violated on term ");
termPrint (scan->term);
printf (" but we couldn't find the corresponding claim.\n");
exit (1);
@ -1164,8 +1168,7 @@ secrecyUnfolding (Term t, const Knowledge know)
t = deVar (t);
if (isTermTuple (t))
return termlistConcat (secrecyUnfolding (t->left.op1, know),
secrecyUnfolding(t->right.op2,know)
);
secrecyUnfolding (t->right.op2, know));
else
{
if (inKnowledge (know, t))
@ -1187,11 +1190,13 @@ secrecyUnfolding (Term t, const Knowledge know)
*/
Termlist
claimViolationDetails (const System sys, const int run, const Roledef rd, const Knowledge know)
claimViolationDetails (const System sys, const int run, const Roledef rd,
const Knowledge know)
{
if (rd->type != CLAIM)
{
fprintf(stderr, "Trying to determine details of something other than a claim!\n");
fprintf (stderr,
"Trying to determine details of something other than a claim!\n");
exit (-1);
}
@ -1433,4 +1438,3 @@ executeTry (const System sys, int run)
}
return flag;
}

View File

@ -497,7 +497,8 @@ attackDisplay (const System sys)
*-------------------------------------------
*/
void graphInit (const System sys)
void
graphInit (const System sys)
{
Termlist tl;
@ -524,7 +525,8 @@ void graphInit (const System sys)
printf ("\tconcentrate=true;\n");
/* node/edge defaults */
printf ("\tnode [shape=\"point\",fontsize=\"4\",fontname=\"Helvetica\"];\n");
printf
("\tnode [shape=\"point\",fontsize=\"4\",fontname=\"Helvetica\"];\n");
printf ("\tedge [fontsize=\"4\",fontname=\"Helvetica\"];\n");
/* start with initial node 0 */
@ -537,13 +539,15 @@ void graphInit (const System sys)
printf ("\"];\n");
}
void graphDone (const System sys)
void
graphDone (const System sys)
{
/* drawing state space. close up. */
printf ("}\n");
}
void graphNode (const System sys)
void
graphNode (const System sys)
{
Termlist newtl;
states_t thisNode, parentNode;
@ -578,11 +582,11 @@ void graphNode (const System sys)
if (sys->switchScenario != 0 &&
rd != NULL &&
rd == sys->runs[run].start &&
rd->type == READ &&
run == sys->lastChooseRun)
rd->type == READ && run == sys->lastChooseRun)
{
/* last choose; scenario selected */
printf ("shape=box,height=0.2,label=\"Scenario %i: ", sys->countScenario);
printf ("shape=box,height=0.2,label=\"Scenario %i: ",
sys->countScenario);
scenarioPrint (sys);
printf ("\"");
}
@ -628,7 +632,8 @@ void graphNode (const System sys)
printf (";\n");
}
void graphNodePath (const System sys, const int length, const char* nodepar)
void
graphNodePath (const System sys, const int length, const char *nodepar)
{
int i;
states_t thisNode;
@ -647,7 +652,8 @@ void graphNodePath (const System sys, const int length, const char* nodepar)
}
}
void graphEdgePath (const System sys, const int length, const char* edgepar)
void
graphEdgePath (const System sys, const int length, const char *edgepar)
{
int i;
states_t thisNode, prevNode;
@ -670,7 +676,8 @@ void graphEdgePath (const System sys, const int length, const char* edgepar)
}
}
void graphPath (const System sys, int length)
void
graphPath (const System sys, int length)
{
graphNodePath (sys, length, "style=bold,color=red");
graphEdgePath (sys, length - 1, "style=bold,color=red");
@ -682,15 +689,12 @@ graphScenario (const System sys, const int run, const Roledef rd)
{
/* Add scenario node */
printf ("\ts%i [shape=box,height=0.2,label=\"Scenario %i: ",
sys->countScenario,
sys->countScenario);
sys->countScenario, sys->countScenario);
scenarioPrint (sys);
printf ("\"];\n");
/* draw edge */
printf ("\tn%i -> s%i",
sys->traceNode[sys->step],
sys->countScenario);
printf ("\tn%i -> s%i", sys->traceNode[sys->step], sys->countScenario);
printf (" [color=blue,label=\"");
printf ("%i:", sys->runs[run].step);
roledefPrint (rd);

View File

@ -8,10 +8,8 @@ void attackDisplay(const System sys);
void graphInit (const System sys);
void graphDone (const System sys);
void graphNode (const System sys);
void graphNodePath (const System sys, const int length, const char*
nodepar);
void graphEdgePath (const System sys, const int length, const char*
edgepar);
void graphNodePath (const System sys, const int length, const char *nodepar);
void graphEdgePath (const System sys, const int length, const char *edgepar);
void graphPath (const System sys, int length);
void graphScenario (const System sys, const int run, const Roledef rd);

View File

@ -166,7 +166,8 @@ roledefInit (int type, Term label, Term from, Term to, Term msg, Claimlist cl)
*\sa roledefInit()
*/
Roledef
roledefAdd (Roledef rd, int type, Term label, Term from, Term to, Term msg, Claimlist cl)
roledefAdd (Roledef rd, int type, Term label, Term from, Term to, Term msg,
Claimlist cl)
{
Roledef scan;
@ -235,5 +236,3 @@ rolesPrint (Role r)
}
}
}

View File

@ -8,7 +8,8 @@
#include "constraint.h"
#include "states.h"
enum eventtype { READ, SEND, CLAIM };
enum eventtype
{ READ, SEND, CLAIM };
//! The container for the claim info list
struct claimlist
@ -110,11 +111,12 @@ Roledef roledefDuplicate1 (const Roledef rd);
Roledef roledefDuplicate (Roledef rd);
void roledefDelete (Roledef rd);
void roledefDestroy (Roledef rd);
Roledef roledefInit (int type, Term label, Term from, Term to, Term msg, Claimlist cl);
Roledef roledefAdd (Roledef rd, int type, Term label, Term from, Term to, Term msg, Claimlist cl);
Roledef roledefInit (int type, Term label, Term from, Term to, Term msg,
Claimlist cl);
Roledef roledefAdd (Roledef rd, int type, Term label, Term from, Term to,
Term msg, Claimlist cl);
Role roleCreate (Term nameterm);
void rolePrint (Role r);
void rolesPrint (Role r);
#endif

View File

@ -14,7 +14,8 @@ typedef unsigned long int states_t;
__inline__ states_t statesIncrease (const states_t states);
__inline__ double statesDouble (const states_t states);
__inline__ int statesSmallerThan (const states_t states, unsigned long int reflint);
__inline__ int statesSmallerThan (const states_t states,
unsigned long int reflint);
__inline__ void statesFormat (const states_t states);
#endif

View File

@ -6,7 +6,8 @@
*/
#define HASHSIZE 997
enum symboltypes { T_UNDEF = -1, T_PROTOCOL, T_CONST, T_VAR, T_SYSCONST };
enum symboltypes
{ T_UNDEF = -1, T_PROTOCOL, T_CONST, T_VAR, T_SYSCONST };
#define EOS 0

View File

@ -157,9 +157,7 @@ systemRuns (const System sys)
Roledef rd;
rd = runPointerGet (sys, run);
if (rd != NULL &&
rd->internal &&
rd->type == READ)
if (rd != NULL && rd->internal && rd->type == READ)
{
/* increasing run traversal, so this yields max */
sys->lastChooseRun = run;
@ -353,7 +351,8 @@ agentOfRun (const System sys, const int run)
*
* Return -1 if there is no such symmetry.
*/
int staticRunSymmetry (const System sys,const int rid)
int
staticRunSymmetry (const System sys, const int rid)
{
int ridSymm; // previous symmetrical run
Termlist agents; // list of agents for rid
@ -394,7 +393,8 @@ int staticRunSymmetry (const System sys,const int rid)
/* case 1: variable, should match type */
if (isTermVariable (alSymm->term))
{
if (!isTermlistEqual (al->term->stype, alSymm->term->stype))
if (!isTermlistEqual
(al->term->stype, alSymm->term->stype))
isEqual = 0;
}
else
@ -415,7 +415,8 @@ int staticRunSymmetry (const System sys,const int rid)
{
/* this candidate is allright */
#ifdef DEBUG
warning ("Symmetry detection. #%i can depend on #%i.",rid,ridSymm);
warning ("Symmetry detection. #%i can depend on #%i.", rid,
ridSymm);
#endif
return ridSymm;
}
@ -429,7 +430,8 @@ int staticRunSymmetry (const System sys,const int rid)
/**
*@todo For now, we assume it is simply the first read after the choose, if there is one.
*/
int firstNonAgentRead (const System sys, int rid)
int
firstNonAgentRead (const System sys, int rid)
{
int step;
Roledef rd;
@ -449,7 +451,9 @@ int firstNonAgentRead (const System sys, int rid)
if (rd != NULL && !rd->internal && rd->type == READ) // assumes lazy LR eval
{
#ifdef DEBUG
warning ("First read %i with dependency on symmetrical found in run %i.", step, rid);
warning
("First read %i with dependency on symmetrical found in run %i.",
step, rid);
#endif
return step;
}
@ -505,7 +509,9 @@ roleInstance (const System sys, const Protocol protocol, const Role role,
/* newvar is apparently new, but it might occur
* in the first event if it's a read, in which
* case we forget it */
if (sys->switchForceChoose || !(rd->type == READ && termOccurs (rd->message, scanfrom->term)))
if (sys->switchForceChoose
|| !(rd->type == READ
&& termOccurs (rd->message, scanfrom->term)))
{
/* this term is forced as a choose, or it does not occur in the (first) read event */
/* TODO scan might be more complex, but
@ -837,7 +843,8 @@ violatedClaimPrint (const System sys, const int i)
* the redundant events but also the choose events.
*/
int attackLength(struct tracebuf* tb)
int
attackLength (struct tracebuf *tb)
{
int len, i;
@ -870,7 +877,8 @@ commandlinePrint (FILE *stream, const System sys)
}
//! Get the number of roles in the system.
int compute_rolecount (const System sys)
int
compute_rolecount (const System sys)
{
Protocol pr;
int n;
@ -886,7 +894,8 @@ int compute_rolecount (const System sys)
}
//! Compute the maximum number of events in a single role in the system.
int compute_roleeventmax (const System sys)
int
compute_roleeventmax (const System sys)
{
Protocol pr;
int maxev;
@ -910,7 +919,8 @@ int compute_roleeventmax (const System sys)
n++;
rd = rd->next;
}
if (n > maxev) maxev = n;
if (n > maxev)
maxev = n;
r = r->next;
}
pr = pr->next;

View File

@ -12,7 +12,8 @@
#define runPointerGet(sys,run) sys->runs[run].index
#define runPointerSet(sys,run,newp) sys->runs[run].index = newp
enum outputs { EMPTY, ATTACK, STATESPACE, SCENARIOS, SUMMARY };
enum outputs
{ EMPTY, ATTACK, STATESPACE, SCENARIOS, SUMMARY };
//! Protocol definition.
struct protocol

View File

@ -7,7 +7,8 @@
* TAC instructions
*/
enum tactypes {
enum tactypes
{
TAC_UNDEF,
TAC_SYM,
TAC_TUPLE,

View File

@ -159,15 +159,18 @@ hasTermVariable (Term term)
else
{
if (realTermTuple (term))
return (hasTermVariable (term->left.op1) || hasTermVariable (term->right.op2));
return (hasTermVariable (term->left.op1)
|| hasTermVariable (term->right.op2));
else
return (hasTermVariable (term->left.op) || hasTermVariable (term->right.key));
return (hasTermVariable (term->left.op)
|| hasTermVariable (term->right.key));
}
}
//! Safe wrapper for isTermEqual
int isTermEqualDebug (Term t1, Term t2)
int
isTermEqualDebug (Term t1, Term t2)
{
int test1, test2;
@ -218,7 +221,8 @@ isTermEqualFn (Term term1, Term term2)
#ifdef DEBUG
int test;
test = (term1->left.symb == term2->left.symb && term1->right.runid == term2->right.runid);
test = (term1->left.symb == term2->left.symb
&& term1->right.runid == term2->right.runid);
if (test)
{
error ("Strange node equality detected, should not occur.");
@ -267,7 +271,8 @@ termOccurs (Term t, Term tsub)
if (realTermLeaf (t))
return 0;
if (realTermTuple (t))
return (termOccurs (t->left.op1, tsub) || termOccurs (t->right.op2, tsub));
return (termOccurs (t->left.op1, tsub)
|| termOccurs (t->right.op2, tsub));
else
return (termOccurs (t->left.op, tsub) || termOccurs (t->right.key, tsub));
}
@ -787,11 +792,13 @@ termDistance(Term t1, Term t2)
if (isTermEncrypt (t1))
{
/* encryption */
return (termDistance(t1->left.op, t2->left.op) + termDistance(t1->right.key, t2->right.key)) / 2;
return (termDistance (t1->left.op, t2->left.op) +
termDistance (t1->right.key, t2->right.key)) / 2;
}
else
{
return (termDistance(t1->left.op1, t2->left.op1) + termDistance(t1->right.op2, t2->right.op2)) / 2;
return (termDistance (t1->left.op1, t2->left.op1) +
termDistance (t1->right.op2, t2->right.op2)) / 2;
}
}
}
@ -801,7 +808,8 @@ termDistance(Term t1, Term t2)
* Enforce a (arbitrary) ordering on terms
* <0 means a<b, 0 means a=b, >0 means a>b.
*/
int termOrder (Term t1, Term t2)
int
termOrder (Term t1, Term t2)
{
char *name1;
char *name2;
@ -832,9 +840,7 @@ int termOrder (Term t1, Term t2)
/* compare names */
int comp;
comp = strcmp (t1->left.symb->text,
t2->left.symb->text
);
comp = strcmp (t1->left.symb->text, t2->left.symb->text);
if (comp != 0)
{
/* names differ */
@ -845,7 +851,8 @@ int termOrder (Term t1, Term t2)
/* equal names, compare run identifiers */
if (t1->right.runid == t2->right.runid)
{
error ("termOrder: two terms seem to be identical although local precondition says they aren't.");
error
("termOrder: two terms seem to be identical although local precondition says they aren't.");
}
else
{

View File

@ -4,7 +4,8 @@
#include "symbol.h"
// type <= LEAF means it's a leaf, nkay?
enum termtypes { GLOBAL, VARIABLE, LEAF, ENCRYPT, TUPLE };
enum termtypes
{ GLOBAL, VARIABLE, LEAF, ENCRYPT, TUPLE };
//! The most basic datatype in the modelchecker.
/**

View File

@ -394,7 +394,8 @@ termlistAddVariables (Termlist tl, Term t)
t->right.key);
else
return
termlistAddVariables (termlistAddVariables (tl, t->left.op1), t->right.op2);
termlistAddVariables (termlistAddVariables (tl, t->left.op1),
t->right.op2);
}
}
@ -436,7 +437,8 @@ termlistAddRealVariables (Termlist tl, Term t)
t->right.key);
else
return
termlistAddVariables (termlistAddVariables (tl, t->left.op1), t->right.op2);
termlistAddVariables (termlistAddVariables (tl, t->left.op1),
t->right.op2);
}
}
@ -455,9 +457,11 @@ termlistAddBasic (Termlist tl, Term t)
if (!isTermLeaf (t))
{
if (isTermEncrypt (t))
return termlistAddBasic (termlistAddBasic (tl, t->left.op), t->right.key);
return termlistAddBasic (termlistAddBasic (tl, t->left.op),
t->right.key);
else
return termlistAddBasic (termlistAddBasic (tl, t->left.op1), t->right.op2);
return termlistAddBasic (termlistAddBasic (tl, t->left.op1),
t->right.op2);
}
else
{
@ -622,13 +626,17 @@ termLocal (const Term t, Termlist fromlist, Termlist tolist,
Term newt = termDuplicate (t);
if (realTermTuple (t))
{
newt->left.op1 = termLocal (t->left.op1, fromlist, tolist, locals, runid);
newt->right.op2 = termLocal (t->right.op2, fromlist, tolist, locals, runid);
newt->left.op1 =
termLocal (t->left.op1, fromlist, tolist, locals, runid);
newt->right.op2 =
termLocal (t->right.op2, fromlist, tolist, locals, runid);
}
else
{
newt->left.op = termLocal (t->left.op, fromlist, tolist, locals, runid);
newt->right.key = termLocal (t->right.key, fromlist, tolist, locals, runid);
newt->left.op =
termLocal (t->left.op, fromlist, tolist, locals, runid);
newt->right.key =
termLocal (t->right.key, fromlist, tolist, locals, runid);
}
return newt;
}
@ -755,7 +763,8 @@ termlistForward (Termlist tl)
/**
* Compare two termlists containing only basic terms, and yield ordering.
*/
int termlistOrder (Termlist tl1, Termlist tl2)
int
termlistOrder (Termlist tl1, Termlist tl2)
{
int order;
@ -775,5 +784,3 @@ int termlistOrder (Termlist tl1, Termlist tl2)
else
return 1;
}

View File

@ -107,7 +107,8 @@ termmapDelete (const Termmap f)
}
//! Print a function
void termmapPrint (Termmap f)
void
termmapPrint (Termmap f)
{
if (f != NULL)
{

View File

@ -87,7 +87,8 @@ tracebufRebuildKnow(struct tracebuf *tb)
struct tracebuf *
tracebufInit (void)
{
struct tracebuf *tb = (struct tracebuf *) memAlloc(sizeof(struct tracebuf));
struct tracebuf *tb =
(struct tracebuf *) memAlloc (sizeof (struct tracebuf));
tb->length = 0;
tb->reallength = 0;
tb->event = NULL;
@ -162,7 +163,8 @@ tracebufSet (const System sys, int length, int claimev)
tb->status = (int *) memAlloc (length * sizeof (int));
tb->link = (int *) memAlloc (length * sizeof (int));
tb->run = (int *) memAlloc (length * sizeof (int));
tb->know = (Knowledge *) memAlloc((length + 1) * sizeof (struct knowledge*));
tb->know =
(Knowledge *) memAlloc ((length + 1) * sizeof (struct knowledge *));
/* when duplicating the knowledge, we want to instantiate the variables as well
*/

View File

@ -7,7 +7,8 @@
#include "system.h"
/* STATUS symbols */
enum statussymbols {
enum statussymbols
{
S_UNK, // UNKnown : unprocessed.
S_OKE, // OKE : done, but required for the attack.
S_RED, // REDundant : is not needed for attack, we're sure.

View File

@ -90,5 +90,3 @@ varbufDone (Varbuf vb)
memFree (vb, sizeof (struct varbuf));
}
}