Merge remote-tracking branch 'origin/master' into topic/johanna/tls12-decryption

This commit is contained in:
Johanna Amann 2022-01-11 11:04:20 +00:00
commit 304a06bb88
36 changed files with 208 additions and 137 deletions

View file

@ -122,18 +122,6 @@ centosstream8_task:
<< : *RESOURCES_TEMPLATE
<< : *CI_TEMPLATE
centos8_task:
container:
# CentOS 8 EOL: May 31, 2029
dockerfile: ci/centos-8/Dockerfile
<< : *RESOURCES_TEMPLATE
env:
ZEEK_CI_CREATE_ARTIFACT: 1
<< : *CI_TEMPLATE
upload_binary_artifacts:
path: build.tgz
benchmark_script: ./ci/benchmark.sh
centos7_task:
container:
# CentOS 7 EOL: June 30, 2024

47
CHANGES
View file

@ -1,3 +1,50 @@
5.0.0-dev.28 | 2022-01-10 10:30:39 -0700
* fix for avoiding de-ref of nil pointer (Vern Paxson, Corelight)
5.0.0-dev.25 | 2022-01-10 14:42:50 +0100
* GH-1844: Fix host header normalization in intel framework. (Robin
Sommer, Corelight)
* GH-1844: Switch to recording unmodified HTTP header. (Robin
Sommer, Corelight)
5.0.0-dev.22 | 2022-01-07 12:34:25 -0700
* GH-1624: Migrate check_and_promote and a few Expr methods to IntrusivePtr (Tim Wojtulewicz, Corelight)
5.0.0-dev.19 | 2022-01-06 15:06:59 -0700
* bug fix for reporting poorly formed record constructors (Vern Paxson, Corelight)
5.0.0-dev.17 | 2022-01-06 14:04:48 -0700
* Remove CentOS 8 from CI. (Johanna Amann, Corelight)
EOL was 2021-12-31
5.0.0-dev.15 | 2022-01-06 13:54:38 -0700
* test suite alternative baseline fixes for recent test renaming (Vern Paxson, Corelight)
* addressed a couple of memory leaks in ZAM execution (Vern Paxson, Corelight)
5.0.0-dev.10 | 2022-01-05 09:13:45 -0700
* Make FreeBSD more flexible, don't look for jemalloc unless we were (Craig Leres)
given a specific path for it.
* Set JEMALLOC_FOUND when on FreeBSD (suggested by Tim Wojtulewicz) (Craig Leres)
* FreeBSD: don't look for jemalloc as a package, it's in the base system (Craig Leres)
5.0.0-dev.6 | 2022-01-05 09:12:33 -0700
* Fix return type of double_to_int (Johanna Amann, Corelight)
Fixes GH-1919
4.2.0-dev.514 | 2022-01-03 13:56:12 -0700
* deprecation warning on use of out-of-scope local (Vern Paxson, Corelight)

View file

@ -295,7 +295,17 @@ if ( NOT BIFCL_EXE_PATH )
endif ()
if (ENABLE_JEMALLOC)
find_package(JeMalloc)
if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
if (DEFINED ${JEMALLOC_ROOT_DIR})
# Look for jemalloc at a specific path
find_package(JeMalloc)
else()
# jemalloc is in the base system
set(JEMALLOC_FOUND true)
endif()
else()
find_package(JeMalloc)
endif()
if (NOT JEMALLOC_FOUND)
message(FATAL_ERROR "Could not find requested JeMalloc")

19
NEWS
View file

@ -3,6 +3,21 @@ This document summarizes the most important changes in the current Zeek
release. For an exhaustive list of changes, see the ``CHANGES`` file
(note that submodules, such as Broker, come with their own ``CHANGES``.)
Zeek 5.0.0
==========
Breaking Changes
----------------
New Functionality
-----------------
Changed Functionality
---------------------
Deprecated Functionality
------------------------
Zeek 4.2.0
==========
@ -163,6 +178,10 @@ Changed Functionality
ZeekControl's functionality. ZeekControl remains the recommended tool for
maintaining your cluster.
- Entries in ``http.log`` now record the original ``HOST`` headers.
Previously, they would skip any port specification a header might
include.
Deprecated Functionality
------------------------

View file

@ -1 +1 @@
5.0.0-dev.2
5.0.0-dev.28

@ -1 +1 @@
Subproject commit a7d9233b37daac558314625566bb8c8a993f2904
Subproject commit eed5effea5661e03b50d0436fecb620a05fb1250

@ -1 +1 @@
Subproject commit 8b1322d3060a1fecdc586693e6215ad7ef8ab0e9
Subproject commit e751fa36b107c64bc9ac22c14fc694cd091ee526

@ -1 +1 @@
Subproject commit d9e84400534b968e33ab01cfadfb569c0d7b2929
Subproject commit 41c524f172aa357422f1ccf7e806b448d5def08e

@ -1 +1 @@
Subproject commit feffa1d51e4e5494fef7daf2bd044138cb04f621
Subproject commit f7a9da292cc97567473d8656afbcced3c6d6ebfa

@ -1 +1 @@
Subproject commit 12be5e3e51a4a97ab3aa0fa4a02da194a83c7f24
Subproject commit 0f120aa00c2b666ed5c430a6bcf1043b82f17e64

@ -1 +1 @@
Subproject commit 95b048298a77bb14d2c54dcca8bb549c86eb96b9
Subproject commit e7fd4d552ec7c3e55cb556943bf8b499d2db17e1

View file

@ -1,30 +0,0 @@
FROM centos:8
RUN dnf -y install epel-release dnf-plugins-core \
&& dnf clean all && rm -rf /var/cache/dnf
RUN dnf config-manager --set-enabled powertools
RUN dnf -y update && dnf -y install \
git \
cmake \
make \
gcc \
gcc-c++ \
flex \
bison \
swig \
openssl \
openssl-devel \
libpcap-devel \
python3 \
python3-devel \
python3-pip \
zlib-devel \
libsqlite3x-devel \
findutils \
diffutils \
which \
&& dnf clean all && rm -rf /var/cache/dnf
RUN pip3 install junit2html

2
cmake

@ -1 +1 @@
Subproject commit 12fbc1a3bc206a57b079505e3df938c3a993ba58
Subproject commit 105f6c9df616a4c2286d5ef38c2b31a718192301

2
doc

@ -1 +1 @@
Subproject commit b8ae1f336272371d6c46fda133e472a075f69e3d
Subproject commit d7a74c1b81270fa98e48f89e9a2629516c8b39f7

View file

@ -263,8 +263,9 @@ event http_header(c: connection, is_orig: bool, name: string, value: string) &pr
c$http$referrer = value;
else if ( name == "HOST" )
# The split is done to remove the occasional port value that shows up here.
c$http$host = split_string1(value, /:/)[0];
# Per #1844, we record the original host header, including any port
# specification if present.
c$http$host = value;
else if ( name == "RANGE" )
c$http$range_request = T;

View file

@ -9,8 +9,8 @@ event http_header(c: connection, is_orig: bool, name: string, value: string)
switch ( name )
{
case "HOST":
# The split is done to remove the occasional port value that shows up here (see also base script)
local host = split_string1(value, /:/)[0];
# Remove the occasional port value that shows up here.
local host = gsub(value, /:[[:digit:]]+$/, "");
if ( is_valid_ip(host) )
Intel::seen([$host=to_addr(host),
$indicator_type=Intel::ADDR,

View file

@ -263,7 +263,7 @@ bool Expr::InvertSense()
return false;
}
void Expr::EvalIntoAggregate(const zeek::Type* /* t */, Val* /* aggr */, Frame* /* f */) const
void Expr::EvalIntoAggregate(const TypePtr& /* t */, ValPtr /* aggr */, Frame* /* f */) const
{
Internal("Expr::EvalIntoAggregate called");
}
@ -416,7 +416,7 @@ bool Expr::IsPure() const
return true;
}
ValPtr Expr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr Expr::InitVal(const TypePtr& t, ValPtr aggr) const
{
if ( aggr )
{
@ -2637,7 +2637,7 @@ TypePtr AssignExpr::InitType() const
return make_intrusive<TableType>(IntrusivePtr{NewRef{}, tl->AsTypeList()}, op2->GetType());
}
void AssignExpr::EvalIntoAggregate(const zeek::Type* t, Val* aggr, Frame* f) const
void AssignExpr::EvalIntoAggregate(const TypePtr& t, ValPtr aggr, Frame* f) const
{
if ( IsError() )
return;
@ -2677,7 +2677,7 @@ void AssignExpr::EvalIntoAggregate(const zeek::Type* t, Val* aggr, Frame* f) con
TableVal* tv = aggr->AsTableVal();
auto index = op1->Eval(f);
auto v = check_and_promote(op2->Eval(f), t->Yield().get(), true);
auto v = check_and_promote(op2->Eval(f), t->Yield(), true);
if ( ! index || ! v )
return;
@ -2686,7 +2686,7 @@ void AssignExpr::EvalIntoAggregate(const zeek::Type* t, Val* aggr, Frame* f) con
RuntimeError("type clash in table assignment");
}
ValPtr AssignExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr AssignExpr::InitVal(const TypePtr& t, ValPtr aggr) const
{
if ( ! aggr )
{
@ -2703,7 +2703,7 @@ ValPtr AssignExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
{
if ( t->Tag() != TYPE_RECORD )
{
Error("not a record initializer", t);
Error("not a record initializer", t.get());
return nullptr;
}
@ -2721,7 +2721,7 @@ ValPtr AssignExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
RecordVal* aggr_r = aggr->AsRecordVal();
auto v = op2->InitVal(rt->GetFieldType(td.id).get(), nullptr);
auto v = op2->InitVal(rt->GetFieldType(td.id), nullptr);
if ( ! v )
return nullptr;
@ -2734,7 +2734,7 @@ ValPtr AssignExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
{
if ( t->Tag() != TYPE_TABLE )
{
Error("not a table initialization", t);
Error("not a table initialization", t.get());
return nullptr;
}
@ -2745,7 +2745,7 @@ ValPtr AssignExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
const TableType* tt = tv->GetType()->AsTableType();
const auto& yt = tv->GetType()->Yield();
auto index = op1->InitVal(tt->GetIndices().get(), nullptr);
auto index = op1->InitVal(tt->GetIndices(), nullptr);
if ( yt->Tag() == TYPE_RECORD )
{
@ -2776,7 +2776,7 @@ ValPtr AssignExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
}
}
auto v = op2->InitVal(yt.get(), nullptr);
auto v = op2->InitVal(yt, nullptr);
if ( ! index || ! v )
return nullptr;
@ -3307,11 +3307,15 @@ RecordConstructorExpr::RecordConstructorExpr(ListExprPtr constructor_list)
const ExprPList& exprs = op->AsListExpr()->Exprs();
type_decl_list* record_types = new type_decl_list(exprs.length());
const Expr* constructor_error_expr = nullptr;
for ( const auto& e : exprs )
{
if ( e->Tag() != EXPR_FIELD_ASSIGN )
{
Error("bad type in record constructor", e);
// Don't generate the error yet, as reporting it
// requires that we have a well-formed type.
constructor_error_expr = e;
SetError();
continue;
}
@ -3323,6 +3327,9 @@ RecordConstructorExpr::RecordConstructorExpr(ListExprPtr constructor_list)
}
SetType(make_intrusive<RecordType>(record_types));
if ( constructor_error_expr )
Error("bad type in record constructor", constructor_error_expr);
}
RecordConstructorExpr::RecordConstructorExpr(RecordTypePtr known_rt, ListExprPtr constructor_list)
@ -3365,7 +3372,7 @@ RecordConstructorExpr::RecordConstructorExpr(RecordTypePtr known_rt, ListExprPtr
}
}
ValPtr RecordConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr RecordConstructorExpr::InitVal(const TypePtr& t, ValPtr aggr) const
{
if ( IsError() )
{
@ -3381,8 +3388,7 @@ ValPtr RecordConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
if ( v )
{
RecordVal* rv = v->AsRecordVal();
auto bt = const_cast<zeek::Type*>(t);
RecordTypePtr rt{NewRef{}, bt->AsRecordType()};
RecordTypePtr rt{NewRef{}, t->AsRecordType()};
auto aggr_rec = cast_intrusive<RecordVal>(std::move(aggr));
auto ar = rv->CoerceTo(std::move(rt), std::move(aggr_rec));
@ -3566,14 +3572,14 @@ ValPtr TableConstructorExpr::Eval(Frame* f) const
const ExprPList& exprs = op->AsListExpr()->Exprs();
for ( const auto& expr : exprs )
expr->EvalIntoAggregate(type.get(), aggr.get(), f);
expr->EvalIntoAggregate(type, aggr, f);
aggr->InitDefaultFunc(f);
return aggr;
}
ValPtr TableConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr TableConstructorExpr::InitVal(const TypePtr& t, ValPtr aggr) const
{
if ( IsError() )
return nullptr;
@ -3588,7 +3594,7 @@ ValPtr TableConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
const ExprPList& exprs = op->AsListExpr()->Exprs();
for ( const auto& expr : exprs )
expr->EvalIntoAggregate(t, tval.get(), nullptr);
expr->EvalIntoAggregate(t, tval, nullptr);
return tval;
}
@ -3657,7 +3663,7 @@ SetConstructorExpr::SetConstructorExpr(ListExprPtr constructor_list,
ListExpr* le = ce->AsListExpr();
assert(ce->Tag() == EXPR_LIST);
if ( check_and_promote_exprs(le, type->AsTableType()->GetIndices().get()) )
if ( check_and_promote_exprs(le, type->AsTableType()->GetIndices()) )
{
if ( le != cle[i] )
cle.replace(i, le);
@ -3687,7 +3693,7 @@ ValPtr SetConstructorExpr::Eval(Frame* f) const
return aggr;
}
ValPtr SetConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr SetConstructorExpr::InitVal(const TypePtr& t, ValPtr aggr) const
{
if ( IsError() )
return nullptr;
@ -3703,7 +3709,7 @@ ValPtr SetConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
for ( const auto& e : exprs )
{
auto element = check_and_promote(e->Eval(nullptr), index_type.get(), true);
auto element = check_and_promote(e->Eval(nullptr), index_type, true);
if ( ! element || ! tval->Assign(std::move(element), nullptr) )
{
@ -3785,7 +3791,7 @@ ValPtr VectorConstructorExpr::Eval(Frame* f) const
return vec;
}
ValPtr VectorConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr VectorConstructorExpr::InitVal(const TypePtr& t, ValPtr aggr) const
{
if ( IsError() )
return nullptr;
@ -3801,7 +3807,7 @@ ValPtr VectorConstructorExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
loop_over_list(exprs, i)
{
Expr* e = exprs[i];
auto v = check_and_promote(e->Eval(nullptr), t->Yield().get(), true);
auto v = check_and_promote(e->Eval(nullptr), t->Yield(), true);
if ( ! v || ! vec->Assign(i, std::move(v)) )
{
@ -3832,7 +3838,7 @@ bool FieldAssignExpr::PromoteTo(TypePtr t)
return op != nullptr;
}
void FieldAssignExpr::EvalIntoAggregate(const zeek::Type* t, Val* aggr, Frame* f) const
void FieldAssignExpr::EvalIntoAggregate(const TypePtr& t, ValPtr aggr, Frame* f) const
{
if ( IsError() )
return;
@ -3903,7 +3909,7 @@ ArithCoerceExpr::ArithCoerceExpr(ExprPtr arg_op, TypeTag t)
ValPtr ArithCoerceExpr::FoldSingleVal(ValPtr v, const TypePtr& t) const
{
return check_and_promote(v, t.get(), false, location);
return check_and_promote(v, t, false, location);
}
ValPtr ArithCoerceExpr::Fold(Val* v) const
@ -4040,7 +4046,7 @@ RecordCoerceExpr::RecordCoerceExpr(ExprPtr arg_op, RecordTypePtr r)
}
}
ValPtr RecordCoerceExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr RecordCoerceExpr::InitVal(const TypePtr& t, ValPtr aggr) const
{
if ( IsError() )
{
@ -4054,8 +4060,7 @@ ValPtr RecordCoerceExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
if ( auto v = Eval(nullptr) )
{
RecordVal* rv = v->AsRecordVal();
auto bt = const_cast<zeek::Type*>(t);
RecordTypePtr rt{NewRef{}, bt->AsRecordType()};
RecordTypePtr rt{NewRef{}, t->AsRecordType()};
auto aggr_rec = cast_intrusive<RecordVal>(std::move(aggr));
if ( auto ar = rv->CoerceTo(std::move(rt), std::move(aggr_rec)) )
@ -4127,7 +4132,7 @@ RecordValPtr coerce_to_record(RecordTypePtr rt, Val* v, const std::vector<int>&
else if ( BothArithmetic(rhs_type->Tag(), field_type->Tag()) &&
! same_type(rhs_type, field_type) )
{
auto new_val = check_and_promote(rhs, field_type.get(), false);
auto new_val = check_and_promote(rhs, field_type, false);
rhs = std::move(new_val);
}
@ -4922,7 +4927,7 @@ TypePtr ListExpr::InitType() const
}
}
ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
ValPtr ListExpr::InitVal(const TypePtr& t, ValPtr aggr) const
{
// While fairly similar to the EvalIntoAggregate() code,
// we keep this separate since it also deals with initialization
@ -4940,13 +4945,13 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
if ( exprs.length() != static_cast<int>(tl.size()) )
{
Error("index mismatch", t);
Error("index mismatch", t.get());
return nullptr;
}
loop_over_list(exprs, i)
{
auto vi = exprs[i]->InitVal(tl[i].get(), nullptr);
auto vi = exprs[i]->InitVal(tl[i], nullptr);
if ( ! vi )
return nullptr;
@ -4960,7 +4965,7 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
{
if ( aggr )
{
Error("bad use of list in initialization", t);
Error("bad use of list in initialization", t.get());
return nullptr;
}
@ -4968,7 +4973,7 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
if ( exprs.length() != static_cast<int>(tl.size()) )
{
Error("index mismatch", t);
Error("index mismatch", t.get());
return nullptr;
}
@ -4976,7 +4981,7 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
loop_over_list(exprs, i)
{
auto vi = exprs[i]->InitVal(tl[i].get(), nullptr);
auto vi = exprs[i]->InitVal(tl[i], nullptr);
if ( ! vi )
return nullptr;
@ -4994,7 +4999,7 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
return exprs[0]->InitVal(t, aggr);
else
{
Error("aggregate initializer for scalar type", t);
Error("aggregate initializer for scalar type", t.get());
return nullptr;
}
}
@ -5045,7 +5050,7 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
{
if ( t->Tag() == TYPE_RECORD )
{
e->Error("bad record initializer", t);
e->Error("bad record initializer", t.get());
return nullptr;
}
@ -5053,7 +5058,7 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
if ( ! same_type(v->GetType(), t) )
{
v->GetType()->Error("type clash in table initializer", t);
v->GetType()->Error("type clash in table initializer", t.get());
return nullptr;
}
@ -5065,14 +5070,14 @@ ValPtr ListExpr::InitVal(const zeek::Type* t, ValPtr aggr) const
return aggr;
}
ValPtr ListExpr::AddSetInit(const zeek::Type* t, ValPtr aggr) const
ValPtr ListExpr::AddSetInit(TypePtr t, ValPtr aggr) const
{
if ( aggr->GetType()->Tag() != TYPE_TABLE )
Internal("bad aggregate in ListExpr::AddSetInit");
TableVal* tv = aggr->AsTableVal();
const TableType* tt = tv->GetType()->AsTableType();
const TypeList* it = tt->GetIndices().get();
TypeListPtr it = tt->GetIndices();
for ( const auto& expr : exprs )
{
@ -5084,7 +5089,7 @@ ValPtr ListExpr::AddSetInit(const zeek::Type* t, ValPtr aggr) const
else if ( expr->GetType()->Tag() == TYPE_LIST )
element = expr->InitVal(it, nullptr);
else
element = expr->InitVal(it->GetTypes()[0].get(), nullptr);
element = expr->InitVal(it->GetTypes()[0], nullptr);
if ( ! element )
return nullptr;
@ -5093,7 +5098,7 @@ ValPtr ListExpr::AddSetInit(const zeek::Type* t, ValPtr aggr) const
{
if ( ! same_type(element->GetType(), t) )
{
element->Error("type clash in set initializer", t);
element->Error("type clash in set initializer", t.get());
return nullptr;
}
@ -5106,7 +5111,7 @@ ValPtr ListExpr::AddSetInit(const zeek::Type* t, ValPtr aggr) const
if ( expr->GetType()->Tag() == TYPE_LIST )
element = check_and_promote(std::move(element), it, true);
else
element = check_and_promote(std::move(element), it->GetTypes()[0].get(), true);
element = check_and_promote(std::move(element), it->GetTypes()[0], true);
if ( ! element )
return nullptr;
@ -5382,7 +5387,7 @@ ExprPtr check_and_promote_expr(ExprPtr e, TypePtr t)
return e;
}
bool check_and_promote_exprs(ListExpr* const elements, TypeList* types)
bool check_and_promote_exprs(ListExpr* const elements, const TypeListPtr& types)
{
ExprPList& el = elements->Exprs();
const auto& tl = types->GetTypes();
@ -5457,13 +5462,12 @@ bool check_and_promote_args(ListExpr* const args, const RecordType* types)
el.push_back(def_elements[--ne].release());
}
TypeList* tl = new TypeList();
auto tl = make_intrusive<TypeList>();
for ( int i = 0; i < types->NumFields(); ++i )
tl->Append(types->GetFieldType(i));
int rval = check_and_promote_exprs(args, tl);
Unref(tl);
return rval;
}

View file

@ -167,7 +167,7 @@ public:
// into the given aggregate of the given type. Note that
// return type is void since it's updating an existing
// value, rather than creating a new one.
virtual void EvalIntoAggregate(const zeek::Type* t, Val* aggr, Frame* f) const;
virtual void EvalIntoAggregate(const TypePtr& t, ValPtr aggr, Frame* f) const;
// Assign to the given value, if appropriate.
virtual void Assign(Frame* f, ValPtr v);
@ -187,7 +187,7 @@ public:
// with the given type. If "aggr" is non-nil, then this expression
// is an element of the given aggregate, and it is added to it
// accordingly.
virtual ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const;
virtual ValPtr InitVal(const TypePtr& t, ValPtr aggr) const;
// True if the expression has no side effects, false otherwise.
virtual bool IsPure() const;
@ -939,10 +939,10 @@ public:
const AttributesPtr& attrs = nullptr, bool type_check = true);
ValPtr Eval(Frame* f) const override;
void EvalIntoAggregate(const zeek::Type* t, Val* aggr, Frame* f) const override;
void EvalIntoAggregate(const TypePtr& t, ValPtr aggr, Frame* f) const override;
TypePtr InitType() const override;
bool IsRecordElement(TypeDecl* td) const override;
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
ValPtr InitVal(const TypePtr& t, ValPtr aggr) const override;
bool IsPure() const override;
// Optimization-related:
@ -1149,7 +1149,7 @@ public:
StmtPtr ReduceToSingletons(Reducer* c) override;
protected:
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
ValPtr InitVal(const TypePtr& t, ValPtr aggr) const override;
void ExprDescribe(ODesc* d) const override;
@ -1175,7 +1175,7 @@ public:
StmtPtr ReduceToSingletons(Reducer* c) override;
protected:
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
ValPtr InitVal(const TypePtr& t, ValPtr aggr) const override;
void ExprDescribe(ODesc* d) const override;
@ -1200,7 +1200,7 @@ public:
StmtPtr ReduceToSingletons(Reducer* c) override;
protected:
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
ValPtr InitVal(const TypePtr& t, ValPtr aggr) const override;
void ExprDescribe(ODesc* d) const override;
@ -1220,7 +1220,7 @@ public:
bool HasReducedOps(Reducer* c) const override;
protected:
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
ValPtr InitVal(const TypePtr& t, ValPtr aggr) const override;
void ExprDescribe(ODesc* d) const override;
};
@ -1240,7 +1240,7 @@ public:
// (in which case an error is reported).
bool PromoteTo(TypePtr t);
void EvalIntoAggregate(const zeek::Type* t, Val* aggr, Frame* f) const override;
void EvalIntoAggregate(const TypePtr& t, ValPtr aggr, Frame* f) const override;
bool IsRecordElement(TypeDecl* td) const override;
// Optimization-related:
@ -1282,7 +1282,7 @@ public:
const std::vector<int>& Map() const { return map; }
protected:
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
ValPtr InitVal(const TypePtr& t, ValPtr aggr) const override;
ValPtr Fold(Val* v) const override;
// For each super-record slot, gives subrecord slot with which to
@ -1470,7 +1470,7 @@ public:
ValPtr Eval(Frame* f) const override;
TypePtr InitType() const override;
ValPtr InitVal(const zeek::Type* t, ValPtr aggr) const override;
ValPtr InitVal(const TypePtr& t, ValPtr aggr) const override;
ExprPtr MakeLvalue() override;
void Assign(Frame* f, ValPtr v) override;
@ -1486,7 +1486,7 @@ public:
StmtPtr ReduceToSingletons(Reducer* c) override;
protected:
ValPtr AddSetInit(const zeek::Type* t, ValPtr aggr) const;
ValPtr AddSetInit(TypePtr t, ValPtr aggr) const;
void ExprDescribe(ODesc* d) const override;
@ -1767,7 +1767,7 @@ ExprPtr get_assign_expr(ExprPtr op1, ExprPtr op2, bool is_init);
*/
extern ExprPtr check_and_promote_expr(ExprPtr e, TypePtr t);
extern bool check_and_promote_exprs(ListExpr* elements, TypeList* types);
extern bool check_and_promote_exprs(ListExpr* elements, const TypeListPtr& types);
extern bool check_and_promote_args(ListExpr* args, const RecordType* types);
extern bool check_and_promote_exprs_to_type(ListExpr* elements, TypePtr type);

View file

@ -706,8 +706,12 @@ broker::expected<broker::data> ScriptFunc::SerializeClosure() const
{
if ( captures_frame )
return captures_frame->SerializeCopyFrame();
else
if ( closure )
return closure->SerializeClosureFrame(outer_ids);
// No captures/closures, return an empty vector.
return broker::vector{};
}
void ScriptFunc::Describe(ODesc* d) const

View file

@ -345,8 +345,8 @@ int IndexType::MatchesIndex(detail::ListExpr* const index) const
exprs[0]->GetType()->Tag() == TYPE_ADDR )
return MATCHES_INDEX_SCALAR;
return check_and_promote_exprs(index, GetIndices().get()) ? MATCHES_INDEX_SCALAR
: DOES_NOT_MATCH_INDEX;
return check_and_promote_exprs(index, GetIndices()) ? MATCHES_INDEX_SCALAR
: DOES_NOT_MATCH_INDEX;
}
void IndexType::Describe(ODesc* d) const
@ -590,7 +590,7 @@ SetType::SetType(TypeListPtr ind, detail::ListExprPtr arg_elements)
{
if ( indices )
{ // We already have a type.
if ( ! check_and_promote_exprs(elements.get(), indices.get()) )
if ( ! check_and_promote_exprs(elements.get(), indices) )
SetError();
}
else

View file

@ -3730,8 +3730,19 @@ void VectorVal::ValDescribe(ODesc* d) const
d->Add("]");
}
ValPtr check_and_promote(ValPtr v, const Type* t, bool is_init,
ValPtr check_and_promote(ValPtr v, const TypePtr& t, bool is_init,
const detail::Location* expr_location)
{
// Once 5.0 comes out, this function can merge with the deprecated one below it, and this
// pragma block can go away.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
return check_and_promote(v, t.get(), is_init, expr_location);
#pragma GCC diagnostic pop
}
[[deprecated("Remove in v5.1. Use version that takes TypePtr instead.")]] ValPtr
check_and_promote(ValPtr v, const Type* t, bool is_init, const detail::Location* expr_location)
{
if ( ! v )
return nullptr;

View file

@ -1699,8 +1699,11 @@ UNDERLYING_ACCESSOR_DEF(TypeVal, zeek::Type*, AsType)
// exact match, returns it. If promotable, returns the promoted version.
// If not a match, generates an error message and return nil. If is_init is
// true, then the checking is done in the context of an initialization.
extern ValPtr check_and_promote(ValPtr v, const Type* t, bool is_init,
extern ValPtr check_and_promote(ValPtr v, const TypePtr& t, bool is_init,
const detail::Location* expr_location = nullptr);
[[deprecated("Remove in v5.1. Use version that takes TypePtr instead.")]] extern ValPtr
check_and_promote(ValPtr v, const Type* t, bool is_init,
const detail::Location* expr_location = nullptr);
extern bool same_val(const Val* v1, const Val* v2);
extern bool same_atomic_val(const Val* v1, const Val* v2);

View file

@ -23,7 +23,7 @@
namespace zeek::detail
{
static ValPtr init_val(Expr* init, const Type* t, ValPtr aggr)
static ValPtr init_val(ExprPtr init, TypePtr t, ValPtr aggr)
{
try
{
@ -289,7 +289,7 @@ static void make_var(const IDPtr& id, TypePtr t, InitClass c, ExprPtr init,
if ( init )
{
v = init_val(init.get(), t.get(), aggr);
v = init_val(init, t, aggr);
if ( ! v )
return;

View file

@ -197,7 +197,7 @@ TableValPtr set_constructor__CPP(vector<ValPtr> elements, TableTypePtr t, vector
TableValPtr table_constructor__CPP(vector<ValPtr> indices, vector<ValPtr> vals, TableTypePtr t,
vector<int> attr_tags, vector<ValPtr> attr_vals)
{
const auto& yt = t->Yield().get();
const auto& yt = t->Yield();
auto n = indices.size();
auto attrs = build_attrs__CPP(move(attr_tags), move(attr_vals));

View file

@ -1386,8 +1386,8 @@ void ZAM_ExprOpTemplate::InstantiateEval(const vector<ZAM_OperandType>& ot_orig,
auto is_none = ei.LHS_ET() == ZAM_EXPR_TYPE_NONE;
auto is_default = ei.LHS_ET() == ZAM_EXPR_TYPE_DEFAULT;
if ( zc != ZIC_FIELD && ! is_none && ! is_default &&
find_type_info(ei.LHS_ET()).is_managed && ! HasExplicitResultType() )
if ( ! is_none && ! is_default && find_type_info(ei.LHS_ET()).is_managed &&
! HasExplicitResultType() )
{
auto delim = zc == ZIC_VEC ? "->" : ".";
auto pre = "auto hold_lhs = " + lhs + delim + "ManagedVal();\n\t";

View file

@ -1669,7 +1669,7 @@ internal-op Next-Table-Iter-Val-Var
# v3 = branch target if loop done
type VVV
eval NextTableIterPre(v2, v3)
frame[z.v1] = ti.IterValue();
AssignV1(ti.IterValue());
ti.NextIter(frame);
internal-op Next-Table-Iter-Val-Var-No-Vars
@ -1678,7 +1678,7 @@ internal-op Next-Table-Iter-Val-Var-No-Vars
# v3 = branch target if loop done
type VVV
eval NextTableIterPre(v2, v3)
frame[z.v1] = ti.IterValue();
AssignV1(ti.IterValue());
ti.IterFinished();

View file

@ -2424,7 +2424,7 @@ function int_to_count%(n: int%): count
## Returns: The :zeek:type:`double` *d* as unsigned integer, or 0 if *d* < 0.0.
## The value returned follows typical rounding rules, as implemented
## by rint().
function double_to_int%(d: double%): count
function double_to_int%(d: double%): int
%{
return zeek::val_mgr->Int(bro_int_t(rint(d)));
%}

View file

@ -1,3 +1,3 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
warning: "-O optimize-AST" option is incompatible with -u option, deactivating optimization
warning: please_warn assignment unused: please_warn = test; <...>/unused-assignement.zeek, line 7
warning: please_warn assignment unused: please_warn = test; <...>/unused-assignment.zeek, line 7

View file

@ -1,3 +1,3 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
warning: "-O optimize-AST" option is incompatible with -u option, deactivating optimization
warning: please_warn assignment unused: please_warn = test; <...>/unused-assignement.zeek, line 7
warning: please_warn assignment unused: please_warn = test; <...>/unused-assignment.zeek, line 7

View file

@ -0,0 +1,2 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
error in <...>/record-bad-ctor3.zeek, line 13: bad type in record constructor ([$x=a + 5, a + 9] and a + 9)

View file

@ -4460,7 +4460,6 @@ XXXXXXXXXX.XXXXXX MetaHookPost CallFunction(http_request, <null>, ([id=[orig_
XXXXXXXXXX.XXXXXX MetaHookPost CallFunction(id_string, <frame>, ([orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp])) -> <no result>
XXXXXXXXXX.XXXXXX MetaHookPost CallFunction(network_time, <frame>, ()) -> <no result>
XXXXXXXXXX.XXXXXX MetaHookPost CallFunction(set_file_handle, <frame>, (Analyzer::ANALYZER_HTTPXXXXXXXXXX.XXXXXXT11141.142.228.5:59856 > 192.150.187.43:80)) -> <no result>
XXXXXXXXXX.XXXXXX MetaHookPost CallFunction(split_string1, <frame>, (bro.org, /^?(:)$?/)) -> <no result>
XXXXXXXXXX.XXXXXX MetaHookPost DrainEvents() -> <void>
XXXXXXXXXX.XXXXXX MetaHookPost QueueEvent(analyzer_confirmation([id=[orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp], orig=[size=136, state=4, num_pkts=2, num_bytes_ip=116, flow_label=0, l2_addr=c8:bc:c8:96:d2:a0], resp=[size=0, state=4, num_pkts=1, num_bytes_ip=60, flow_label=0, l2_addr=00:10:db:88:d2:ef], start_time=XXXXXXXXXX.XXXXXX, duration=70.0 msecs 183.038712 usecs, service={}, history=ShAD, uid=CHhAvVGS1DHFjwGM9, tunnel=<uninitialized>, vlan=<uninitialized>, inner_vlan=<uninitialized>, dpd=<uninitialized>, dpd_state=<uninitialized>, removal_hooks=<uninitialized>, conn=<uninitialized>, extract_orig=F, extract_resp=F, thresholds=<uninitialized>, dce_rpc=<uninitialized>, dce_rpc_state=<uninitialized>, dce_rpc_backing=<uninitialized>, dhcp=<uninitialized>, dnp3=<uninitialized>, dns=<uninitialized>, dns_state=<uninitialized>, ftp=<uninitialized>, ftp_data_reuse=F, ssl=<uninitialized>, http=<uninitialized>, http_state=<uninitialized>, irc=<uninitialized>, krb=<uninitialized>, modbus=<uninitialized>, mysql=<uninitialized>, ntlm=<uninitialized>, ntp=<uninitialized>, radius=<uninitialized>, rdp=<uninitialized>, rfb=<uninitialized>, sip=<uninitialized>, sip_state=<uninitialized>, snmp=<uninitialized>, smb_state=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], Analyzer::ANALYZER_HTTP, 3)) -> false
XXXXXXXXXX.XXXXXX MetaHookPost QueueEvent(get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp], orig=[size=136, state=4, num_pkts=2, num_bytes_ip=116, flow_label=0, l2_addr=c8:bc:c8:96:d2:a0], resp=[size=0, state=4, num_pkts=1, num_bytes_ip=60, flow_label=0, l2_addr=00:10:db:88:d2:ef], start_time=XXXXXXXXXX.XXXXXX, duration=70.0 msecs 183.038712 usecs, service={}, history=ShAD, uid=CHhAvVGS1DHFjwGM9, tunnel=<uninitialized>, vlan=<uninitialized>, inner_vlan=<uninitialized>, dpd=<uninitialized>, dpd_state=<uninitialized>, removal_hooks=<uninitialized>, conn=<uninitialized>, extract_orig=F, extract_resp=F, thresholds=<uninitialized>, dce_rpc=<uninitialized>, dce_rpc_state=<uninitialized>, dce_rpc_backing=<uninitialized>, dhcp=<uninitialized>, dnp3=<uninitialized>, dns=<uninitialized>, dns_state=<uninitialized>, ftp=<uninitialized>, ftp_data_reuse=F, ssl=<uninitialized>, http=<uninitialized>, http_state=<uninitialized>, irc=<uninitialized>, krb=<uninitialized>, modbus=<uninitialized>, mysql=<uninitialized>, ntlm=<uninitialized>, ntp=<uninitialized>, radius=<uninitialized>, rdp=<uninitialized>, rfb=<uninitialized>, sip=<uninitialized>, sip_state=<uninitialized>, snmp=<uninitialized>, smb_state=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], T)) -> false
@ -4500,7 +4499,6 @@ XXXXXXXXXX.XXXXXX MetaHookPre CallFunction(http_request, <null>, ([id=[orig_
XXXXXXXXXX.XXXXXX MetaHookPre CallFunction(id_string, <frame>, ([orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp]))
XXXXXXXXXX.XXXXXX MetaHookPre CallFunction(network_time, <frame>, ())
XXXXXXXXXX.XXXXXX MetaHookPre CallFunction(set_file_handle, <frame>, (Analyzer::ANALYZER_HTTPXXXXXXXXXX.XXXXXXT11141.142.228.5:59856 > 192.150.187.43:80))
XXXXXXXXXX.XXXXXX MetaHookPre CallFunction(split_string1, <frame>, (bro.org, /^?(:)$?/))
XXXXXXXXXX.XXXXXX MetaHookPre DrainEvents()
XXXXXXXXXX.XXXXXX MetaHookPre QueueEvent(analyzer_confirmation([id=[orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp], orig=[size=136, state=4, num_pkts=2, num_bytes_ip=116, flow_label=0, l2_addr=c8:bc:c8:96:d2:a0], resp=[size=0, state=4, num_pkts=1, num_bytes_ip=60, flow_label=0, l2_addr=00:10:db:88:d2:ef], start_time=XXXXXXXXXX.XXXXXX, duration=70.0 msecs 183.038712 usecs, service={}, history=ShAD, uid=CHhAvVGS1DHFjwGM9, tunnel=<uninitialized>, vlan=<uninitialized>, inner_vlan=<uninitialized>, dpd=<uninitialized>, dpd_state=<uninitialized>, removal_hooks=<uninitialized>, conn=<uninitialized>, extract_orig=F, extract_resp=F, thresholds=<uninitialized>, dce_rpc=<uninitialized>, dce_rpc_state=<uninitialized>, dce_rpc_backing=<uninitialized>, dhcp=<uninitialized>, dnp3=<uninitialized>, dns=<uninitialized>, dns_state=<uninitialized>, ftp=<uninitialized>, ftp_data_reuse=F, ssl=<uninitialized>, http=<uninitialized>, http_state=<uninitialized>, irc=<uninitialized>, krb=<uninitialized>, modbus=<uninitialized>, mysql=<uninitialized>, ntlm=<uninitialized>, ntp=<uninitialized>, radius=<uninitialized>, rdp=<uninitialized>, rfb=<uninitialized>, sip=<uninitialized>, sip_state=<uninitialized>, snmp=<uninitialized>, smb_state=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], Analyzer::ANALYZER_HTTP, 3))
XXXXXXXXXX.XXXXXX MetaHookPre QueueEvent(get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp], orig=[size=136, state=4, num_pkts=2, num_bytes_ip=116, flow_label=0, l2_addr=c8:bc:c8:96:d2:a0], resp=[size=0, state=4, num_pkts=1, num_bytes_ip=60, flow_label=0, l2_addr=00:10:db:88:d2:ef], start_time=XXXXXXXXXX.XXXXXX, duration=70.0 msecs 183.038712 usecs, service={}, history=ShAD, uid=CHhAvVGS1DHFjwGM9, tunnel=<uninitialized>, vlan=<uninitialized>, inner_vlan=<uninitialized>, dpd=<uninitialized>, dpd_state=<uninitialized>, removal_hooks=<uninitialized>, conn=<uninitialized>, extract_orig=F, extract_resp=F, thresholds=<uninitialized>, dce_rpc=<uninitialized>, dce_rpc_state=<uninitialized>, dce_rpc_backing=<uninitialized>, dhcp=<uninitialized>, dnp3=<uninitialized>, dns=<uninitialized>, dns_state=<uninitialized>, ftp=<uninitialized>, ftp_data_reuse=F, ssl=<uninitialized>, http=<uninitialized>, http_state=<uninitialized>, irc=<uninitialized>, krb=<uninitialized>, modbus=<uninitialized>, mysql=<uninitialized>, ntlm=<uninitialized>, ntp=<uninitialized>, radius=<uninitialized>, rdp=<uninitialized>, rfb=<uninitialized>, sip=<uninitialized>, sip_state=<uninitialized>, snmp=<uninitialized>, smb_state=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], T))
@ -4541,7 +4539,6 @@ XXXXXXXXXX.XXXXXX | HookCallFunction http_request([id=[orig_h=141.142.228.5, ori
XXXXXXXXXX.XXXXXX | HookCallFunction id_string([orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp])
XXXXXXXXXX.XXXXXX | HookCallFunction network_time()
XXXXXXXXXX.XXXXXX | HookCallFunction set_file_handle(Analyzer::ANALYZER_HTTPXXXXXXXXXX.XXXXXXT11141.142.228.5:59856 > 192.150.187.43:80)
XXXXXXXXXX.XXXXXX | HookCallFunction split_string1(bro.org, /^?(:)$?/)
XXXXXXXXXX.XXXXXX | HookDrainEvents
XXXXXXXXXX.XXXXXX | HookQueueEvent analyzer_confirmation([id=[orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp], orig=[size=136, state=4, num_pkts=2, num_bytes_ip=116, flow_label=0, l2_addr=c8:bc:c8:96:d2:a0], resp=[size=0, state=4, num_pkts=1, num_bytes_ip=60, flow_label=0, l2_addr=00:10:db:88:d2:ef], start_time=XXXXXXXXXX.XXXXXX, duration=70.0 msecs 183.038712 usecs, service={}, history=ShAD, uid=CHhAvVGS1DHFjwGM9, tunnel=<uninitialized>, vlan=<uninitialized>, inner_vlan=<uninitialized>, dpd=<uninitialized>, dpd_state=<uninitialized>, removal_hooks=<uninitialized>, conn=<uninitialized>, extract_orig=F, extract_resp=F, thresholds=<uninitialized>, dce_rpc=<uninitialized>, dce_rpc_state=<uninitialized>, dce_rpc_backing=<uninitialized>, dhcp=<uninitialized>, dnp3=<uninitialized>, dns=<uninitialized>, dns_state=<uninitialized>, ftp=<uninitialized>, ftp_data_reuse=F, ssl=<uninitialized>, http=<uninitialized>, http_state=<uninitialized>, irc=<uninitialized>, krb=<uninitialized>, modbus=<uninitialized>, mysql=<uninitialized>, ntlm=<uninitialized>, ntp=<uninitialized>, radius=<uninitialized>, rdp=<uninitialized>, rfb=<uninitialized>, sip=<uninitialized>, sip_state=<uninitialized>, snmp=<uninitialized>, smb_state=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], Analyzer::ANALYZER_HTTP, 3)
XXXXXXXXXX.XXXXXX | HookQueueEvent get_file_handle(Analyzer::ANALYZER_HTTP, [id=[orig_h=141.142.228.5, orig_p=59856/tcp, resp_h=192.150.187.43, resp_p=80/tcp], orig=[size=136, state=4, num_pkts=2, num_bytes_ip=116, flow_label=0, l2_addr=c8:bc:c8:96:d2:a0], resp=[size=0, state=4, num_pkts=1, num_bytes_ip=60, flow_label=0, l2_addr=00:10:db:88:d2:ef], start_time=XXXXXXXXXX.XXXXXX, duration=70.0 msecs 183.038712 usecs, service={}, history=ShAD, uid=CHhAvVGS1DHFjwGM9, tunnel=<uninitialized>, vlan=<uninitialized>, inner_vlan=<uninitialized>, dpd=<uninitialized>, dpd_state=<uninitialized>, removal_hooks=<uninitialized>, conn=<uninitialized>, extract_orig=F, extract_resp=F, thresholds=<uninitialized>, dce_rpc=<uninitialized>, dce_rpc_state=<uninitialized>, dce_rpc_backing=<uninitialized>, dhcp=<uninitialized>, dnp3=<uninitialized>, dns=<uninitialized>, dns_state=<uninitialized>, ftp=<uninitialized>, ftp_data_reuse=F, ssl=<uninitialized>, http=<uninitialized>, http_state=<uninitialized>, irc=<uninitialized>, krb=<uninitialized>, modbus=<uninitialized>, mysql=<uninitialized>, ntlm=<uninitialized>, ntp=<uninitialized>, radius=<uninitialized>, rdp=<uninitialized>, rfb=<uninitialized>, sip=<uninitialized>, sip_state=<uninitialized>, snmp=<uninitialized>, smb_state=<uninitialized>, smtp=<uninitialized>, smtp_state=<uninitialized>, socks=<uninitialized>, ssh=<uninitialized>, syslog=<uninitialized>], T)

View file

@ -7,5 +7,5 @@
#open XXXX-XX-XX-XX-XX-XX
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p trans_depth method host uri referrer version user_agent origin request_body_len response_body_len status_code status_msg info_code info_msg tags username password proxied orig_fuids orig_filenames orig_mime_types resp_fuids resp_filenames resp_mime_types
#types time string addr port addr port count string string string string string string string count count count string count string set[enum] string string set[string] vector[string] vector[string] vector[string] vector[string] vector[string] vector[string]
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 ::1 52522 ::1 80 1 CONNECT secure.newegg.com secure.newegg.com:443 - 1.0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:41.0) Gecko/20100101 Firefox/41.0 - 0 0 200 Connection Established - - (empty) - - PROXY-CONNECTION -> keep-alive - - - - - -
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 ::1 52522 ::1 80 1 CONNECT secure.newegg.com:443 secure.newegg.com:443 - 1.0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:41.0) Gecko/20100101 Firefox/41.0 - 0 0 200 Connection Established - - (empty) - - PROXY-CONNECTION -> keep-alive - - - - - -
#close XXXX-XX-XX-XX-XX-XX

View file

@ -7,5 +7,5 @@
#open XXXX-XX-XX-XX-XX-XX
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p trans_depth method host uri referrer version user_agent origin request_body_len response_body_len status_code status_msg info_code info_msg tags username password proxied orig_fuids orig_filenames orig_mime_types resp_fuids resp_filenames resp_mime_types
#types time string addr port addr port count string string string string string string string count count count string count string set[enum] string string set[string] vector[string] vector[string] vector[string] vector[string] vector[string] vector[string]
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 45376 127.0.0.1 8000 1 POST localhost / - - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 null 767 0 - - - - (empty) - - - FeaAeS2KrXTNRvTtBh test.txt text/plain - - -
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 45376 127.0.0.1 8000 1 POST localhost:8000 / - - Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 null 767 0 - - - - (empty) - - - FeaAeS2KrXTNRvTtBh test.txt text/plain - - -
#close XXXX-XX-XX-XX-XX-XX

View file

@ -0,0 +1,15 @@
# @TEST-EXEC-FAIL: zeek -b %INPUT >out 2>&1
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
# Every element in a record ctor's expression list should have an assignment
# form. Make sure we correctly report errors when that's not the case.
global a = 3;
type r: record { x: count; y: count; };
event zeek_init()
{
local b: r = record($x = a + 5, a + 9);
print b;
}

View file

@ -15,7 +15,7 @@
# # simply update this test's TEST-START-FILE with the latest contents
# site/local.zeek.
@TEST-START-FILE local-4.2.zeek
@TEST-START-FILE local-5.0.zeek
##! Local site policy. Customize as appropriate.
##!
##! This file will not be overwritten when upgrading or reinstalling!

View file

@ -1 +1 @@
67f592e6a84d236aaf5cc08c91c71625a095e49a
7c40cc2c3709fc54e5c75c119d1d01ed8a3ceb93