diff --git a/CHANGES b/CHANGES index 0d7fd7fca6..ce3b1f4de7 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,9 @@ +2.2-75 | 2013-12-18 08:36:50 -0800 + + * Fixing segfault with mismatching set &default in record fields. + (Robin Sommer) + 2.2-74 | 2013-12-16 08:49:55 -0800 * Improve warnings emitted from raw/execute input reader. (Jon diff --git a/VERSION b/VERSION index 1a078d60da..9ee1a5bf6c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2-74 +2.2-75 diff --git a/src/Attr.cc b/src/Attr.cc index 244d1e1687..d6d0f6e68d 100644 --- a/src/Attr.cc +++ b/src/Attr.cc @@ -317,8 +317,9 @@ void Attributes::CheckAttr(Attr* a) break; // Table defaults may be promotable. - if ( (ytype->Tag() == TYPE_RECORD && atype->Tag() == TYPE_RECORD && - record_promotion_compatible(atype->AsRecordType(), ytype->AsRecordType())) ) + if ( ytype && ytype->Tag() == TYPE_RECORD && + atype->Tag() == TYPE_RECORD && + record_promotion_compatible(atype->AsRecordType(), ytype->AsRecordType()) ) // Ok. break; diff --git a/testing/btest/Baseline/language.record-default-set-mismatch/out b/testing/btest/Baseline/language.record-default-set-mismatch/out new file mode 100644 index 0000000000..c005138c0c --- /dev/null +++ b/testing/btest/Baseline/language.record-default-set-mismatch/out @@ -0,0 +1 @@ +error in /home/robin/bro/master/testing/btest/.tmp/language.record-default-set-mismatch/record-default-set-mismatch.bro, line 5: &default value has inconsistent type (&default=set(1, 2, 3)) diff --git a/testing/btest/language/record-default-set-mismatch.bro b/testing/btest/language/record-default-set-mismatch.bro new file mode 100644 index 0000000000..aab35321eb --- /dev/null +++ b/testing/btest/language/record-default-set-mismatch.bro @@ -0,0 +1,9 @@ +# @TEST-EXEC-FAIL: bro -b %INPUT 2>out +# @TEST-EXEC: btest-diff out + +type Foo: record { + a: set[string] &default=set(1,2,3); +}; + +global f: Foo; +print f;