diff --git a/NEWS b/NEWS index 698898030..a558ef149 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,10 @@ New in spot 2.5.1.dev (not yet released) - Nothing yet. + Bugs fixed: + + - acc_cond::is_generalized_rabin() and + acc_cond::is_generalized_streett() would segfault on weird + acceptance conditions such as "3 t" or "3 f". New in spot 2.5.1 (2018-02-20) diff --git a/spot/twa/acc.cc b/spot/twa/acc.cc index 0c36625b5..e915a4eaa 100644 --- a/spot/twa/acc.cc +++ b/spot/twa/acc.cc @@ -659,7 +659,10 @@ namespace spot pairs.resize(num_); return true; } - if (code_.is_t() + // "Acceptance: 0 f" is caught by is_generalized_rabin() above. + // Therefore is_f() below catches "Acceptance: n f" with n>0. + if (code_.is_f() + || code_.is_t() || code_.back().sub.op != acc_op::Or) return false; @@ -740,7 +743,10 @@ namespace spot pairs.resize(num_); return true; } - if (code_.is_f() + // "Acceptance: 0 t" is caught by is_generalized_buchi() above. + // Therefore is_t() below catches "Acceptance: n t" with n>0. + if (code_.is_t() + || code_.is_f() || code_.back().sub.op != acc_op::And) return false;