diff --git a/scripts/base/frameworks/config/main.zeek b/scripts/base/frameworks/config/main.zeek index e2cfb11c8a..5fe7f6eaaf 100644 --- a/scripts/base/frameworks/config/main.zeek +++ b/scripts/base/frameworks/config/main.zeek @@ -124,8 +124,13 @@ function format_value(value: any) : string { local tn = type_name(value); local part: string_vec = vector(); - if ( /^set/ in tn ) + + if ( /^set/ in tn && strstr(tn, ",") == 0 ) { + # The conversion to set here is tricky and assumes + # that the set isn't indexed via a tuple of types. + # The above check for commas in the type name + # ensures this. local it: set[bool] = value; for ( sv in it ) part += cat(sv); diff --git a/src/input/Manager.cc b/src/input/Manager.cc index 27b47491eb..e065b87566 100644 --- a/src/input/Manager.cc +++ b/src/input/Manager.cc @@ -833,7 +833,12 @@ bool Manager::IsCompatibleType(Type* t, bool atomic_only) if ( ! t->IsSet() ) return false; - return IsCompatibleType(t->AsSetType()->GetIndices()->GetPureType().get(), true); + const auto& indices = t->AsSetType()->GetIndices(); + + if ( indices->GetTypes().size() != 1 ) + return false; + + return IsCompatibleType(indices->GetPureType().get(), true); } case TYPE_VECTOR: