mirror of
https://github.com/zeek/zeek.git
synced 2025-10-08 01:28:20 +00:00
Merge remote-tracking branch 'origin/topic/jsiwek/bit-1367'
Bit-1367 #close
This commit is contained in:
commit
fe9ff46cc5
6 changed files with 64 additions and 3 deletions
8
CHANGES
8
CHANGES
|
@ -1,4 +1,12 @@
|
||||||
|
|
||||||
|
2.3-693 | 2015-04-11 10:56:31 -0700
|
||||||
|
|
||||||
|
* BIT-1367: improve coercion of anonymous records in set constructor.
|
||||||
|
(Jon Siwek)
|
||||||
|
|
||||||
|
* Allow to specify ports for sftp log rotator. (Johanna Amann)
|
||||||
|
|
||||||
|
|
||||||
2.3-690 | 2015-04-10 21:51:10 -0700
|
2.3-690 | 2015-04-10 21:51:10 -0700
|
||||||
|
|
||||||
* Make sure to always delete the remote serializer. Addresses
|
* Make sure to always delete the remote serializer. Addresses
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
2.3-690
|
2.3-693
|
||||||
|
|
|
@ -37,6 +37,8 @@ export {
|
||||||
user: string;
|
user: string;
|
||||||
## The remote host to which to transfer logs.
|
## The remote host to which to transfer logs.
|
||||||
host: string;
|
host: string;
|
||||||
|
## The port to connect to. Defaults to 22
|
||||||
|
host_port: count &default=22;
|
||||||
## The path/directory on the remote host to send logs.
|
## The path/directory on the remote host to send logs.
|
||||||
path: string;
|
path: string;
|
||||||
};
|
};
|
||||||
|
@ -63,8 +65,8 @@ function sftp_postprocessor(info: Log::RotationInfo): bool
|
||||||
{
|
{
|
||||||
local dst = fmt("%s/%s.%s.log", d$path, info$path,
|
local dst = fmt("%s/%s.%s.log", d$path, info$path,
|
||||||
strftime(Log::sftp_rotation_date_format, info$open));
|
strftime(Log::sftp_rotation_date_format, info$open));
|
||||||
command += fmt("echo put %s %s | sftp -b - %s@%s;", info$fname, dst,
|
command += fmt("echo put %s %s | sftp -P %d -b - %s@%s;", info$fname, dst,
|
||||||
d$user, d$host);
|
d$host_port, d$user, d$host);
|
||||||
}
|
}
|
||||||
|
|
||||||
command += fmt("/bin/rm %s", info$fname);
|
command += fmt("/bin/rm %s", info$fname);
|
||||||
|
|
33
src/Expr.cc
33
src/Expr.cc
|
@ -2599,6 +2599,39 @@ bool AssignExpr::TypeCheck(attr_list* attrs)
|
||||||
|
|
||||||
if ( ! same_type(op1->Type(), op2->Type()) )
|
if ( ! same_type(op1->Type(), op2->Type()) )
|
||||||
{
|
{
|
||||||
|
if ( bt1 == TYPE_TABLE && bt2 == TYPE_TABLE )
|
||||||
|
{
|
||||||
|
if ( op2->Tag() == EXPR_SET_CONSTRUCTOR )
|
||||||
|
{
|
||||||
|
// Some elements in constructor list must not match, see if
|
||||||
|
// we can create a new constructor now that the expected type
|
||||||
|
// of LHS is known and let it do coercions where possible.
|
||||||
|
SetConstructorExpr* sce = dynamic_cast<SetConstructorExpr*>(op2);
|
||||||
|
ListExpr* ctor_list = dynamic_cast<ListExpr*>(sce->Op());
|
||||||
|
attr_list* attr_copy = 0;
|
||||||
|
|
||||||
|
if ( sce->Attrs() )
|
||||||
|
{
|
||||||
|
attr_list* a = sce->Attrs()->Attrs();
|
||||||
|
attrs = new attr_list;
|
||||||
|
loop_over_list(*a, i)
|
||||||
|
attrs->append((*a)[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int errors_before = reporter->Errors();
|
||||||
|
op2 = new SetConstructorExpr(ctor_list, attr_copy, op1->Type());
|
||||||
|
int errors_after = reporter->Errors();
|
||||||
|
|
||||||
|
if ( errors_after > errors_before )
|
||||||
|
{
|
||||||
|
ExprError("type clash in assignment");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ExprError("type clash in assignment");
|
ExprError("type clash in assignment");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,4 +18,7 @@ error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-che
|
||||||
error in port and /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 38: arithmetic mixed with non-arithmetic (port and 1002)
|
error in port and /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 38: arithmetic mixed with non-arithmetic (port and 1002)
|
||||||
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 38 and port: type mismatch (1002 and port)
|
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 38 and port: type mismatch (1002 and port)
|
||||||
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 38: inconsistent type in set constructor (set(1002))
|
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 38: inconsistent type in set constructor (set(1002))
|
||||||
|
error in port and /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 44: arithmetic mixed with non-arithmetic (port and 1003)
|
||||||
|
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 44 and port: type mismatch (1003 and port)
|
||||||
|
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 44: inconsistent type in set constructor (set(1003))
|
||||||
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 44: type clash in assignment (lea = set(1003))
|
error in /Users/jsiwek/Projects/bro/bro/testing/btest/.tmp/language.set-type-checking/set-type-checking.bro, line 44: type clash in assignment (lea = set(1003))
|
||||||
|
|
|
@ -43,3 +43,18 @@ event bro_init()
|
||||||
{
|
{
|
||||||
local lea: MySet = set(1003); # type clash
|
local lea: MySet = set(1003); # type clash
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MyRecord: record {
|
||||||
|
user: string;
|
||||||
|
host: string;
|
||||||
|
host_port: count &default=22;
|
||||||
|
path: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
global set_of_records: set[MyRecord];
|
||||||
|
|
||||||
|
event bro_init()
|
||||||
|
{
|
||||||
|
# Set ctor w/ anonymous record ctor should coerce.
|
||||||
|
set_of_records = set([$user="testuser", $host="testhost", $path="testpath"]);
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue