mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 18:18:19 +00:00
Merge remote-tracking branch 'origin/topic/seth/piped_exec-update'
* origin/topic/seth/piped_exec-update: piped_exec can now write nulls in the "to_write" argument.
This commit is contained in:
commit
045fd4690b
3 changed files with 20 additions and 3 deletions
17
src/bro.bif
17
src/bro.bif
|
@ -3624,17 +3624,28 @@ function NFS3::mode2string%(mode: count%): string
|
|||
function piped_exec%(program: string, to_write: string%): bool
|
||||
%{
|
||||
const char* prog = program->CheckString();
|
||||
|
||||
FILE* f = popen(prog, "w");
|
||||
if ( ! f )
|
||||
{
|
||||
reporter->Error("Failed to popen %s", prog);
|
||||
return new Val(false, TYPE_BOOL);
|
||||
return new Val(0, TYPE_BOOL);
|
||||
}
|
||||
|
||||
fprintf(f, "%s", to_write->CheckString());
|
||||
const u_char* input_data = to_write->Bytes();
|
||||
int input_data_len = to_write->Len();
|
||||
|
||||
int bytes_written = fwrite(input_data, 1, input_data_len, f);
|
||||
|
||||
pclose(f);
|
||||
|
||||
return new Val(true, TYPE_BOOL);
|
||||
if ( bytes_written != input_data_len )
|
||||
{
|
||||
reporter->Error("Failed to write all given data to %s", prog);
|
||||
return new Val(0, TYPE_BOOL);
|
||||
}
|
||||
|
||||
return new Val(1, TYPE_BOOL);
|
||||
%}
|
||||
|
||||
## Enables the communication system. Note that by default,
|
||||
|
|
BIN
testing/btest/Baseline/bifs.piped_exec/test.txt
Normal file
BIN
testing/btest/Baseline/bifs.piped_exec/test.txt
Normal file
Binary file not shown.
|
@ -1,6 +1,12 @@
|
|||
# @TEST-EXEC: bro %INPUT >output
|
||||
# @TEST-EXEC: btest-diff output
|
||||
# @TEST-EXEC: btest-diff test.txt
|
||||
|
||||
|
||||
global cmds = "print \"hello world\";";
|
||||
cmds = string_cat(cmds, "\nprint \"foobar\";");
|
||||
piped_exec("bro", cmds);
|
||||
|
||||
# Test null output.
|
||||
piped_exec("cat > test.txt", "\x00\x00hello\x00\x00");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue