Skip to content

static initializer of a flexible array member is silently dropped #9113

Description

@71iq

Version

CBMC version: 6.10.0 (cbmc-6.10.0-29-g357954eca6, develop)
Operating system: Linux x86_64

Code to reporoduce

#include <assert.h>
struct s {long a; int b; int tab[]; }; /* tab: flexible array member (FAM) */
struct s val = {0, 0, {42, 1337}}; /* static FAM initializer (GCC extension) */
int main()
{
  assert(val.tab[0] != 42); /* tab[0] is 42, so this MUST fail */
  return 0;
}

Behavior

I expect the assertion to fail, or if static FAM initialization is considered out of scope, CBMC should reject/error on it rahter than silently reading wrong values.

What happened instead was:

[main.assertion.1] line 6 assertion val.tab[0] != 42: SUCCESS
VERIFICATION SUCCESSFUL

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions