Skip to content

Is there really a need for sets in parametric patterns? #209

Open
@kritonios01

Description

@kritonios01

In the current state of smbf, parametric bug patterns can have sets of fields (i.e. sets of values that appear in a message). For instance, let's take a look at wrong_certificate_type.dot from the dtls/client catalogue:

init -> certreq [label="I_CERTIFICATE_REQUEST[CTset:=cert_type]"]
init -> init [label="other"]

certreq -> certreq [label="other"]
certreq -> bug [label="O_CERTIFICATE[kt:=key_type] where cert_type(kt) !in CTset"]

Here we keep a set of field values which appear in I_CERTIFICATE_REQUEST and go to certreq state when this message is produced. Then, iff a parametric O_CERTIFICATE is produced whose field is not one of the values in I_CERTIFICATE_REQUEST's set we go to the bug state.
The question is: why does it have to be a set? And also what message sequence could fill in the set with more than one value? In the code this set is always instantiated with a single value and I do not see how a set could be formed from the messages of a Mealy machine. What I understand is that when ONE parametric I_CERTIFICATE_REQUEST is produced, this transition is triggered and then if one parametric O_CERTIFICATE (with a different parametric value) is produced then we catch a bug.
Could anyone present a different rationale about how sets are needed in this bug pattern?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions