diff --git a/src/threading/formatters/Ascii.cc b/src/threading/formatters/Ascii.cc index ff43bfa27b..3cff8b02cf 100644 --- a/src/threading/formatters/Ascii.cc +++ b/src/threading/formatters/Ascii.cc @@ -225,7 +225,9 @@ Value* Ascii::ParseValue(const string& s, const string& name, TypeTag type, Type { string unescaped = util::get_unescaped_string(s); val->val.string_val.length = unescaped.size(); - val->val.string_val.data = util::copy_string(unescaped.c_str()); + val->val.string_val.data = new char[val->val.string_val.length]; + // we do not need a zero-byte at the end - the input manager adds that explicitly + memcpy(val->val.string_val.data, unescaped.data(), unescaped.size()); break; } diff --git a/testing/btest/Baseline/scripts.base.frameworks.input.binary/out b/testing/btest/Baseline/scripts.base.frameworks.input.binary/out index 5c7202123e..3b2153d05a 100644 --- a/testing/btest/Baseline/scripts.base.frameworks.input.binary/out +++ b/testing/btest/Baseline/scripts.base.frameworks.input.binary/out @@ -5,3 +5,5 @@ abc|\xffdef DATA2 abc\xff|def DATA2 +abc\x00\x00\x00\xff|def +DATA3 diff --git a/testing/btest/scripts/base/frameworks/input/binary.zeek b/testing/btest/scripts/base/frameworks/input/binary.zeek index fa98625997..b151c2a4b2 100644 --- a/testing/btest/scripts/base/frameworks/input/binary.zeek +++ b/testing/btest/scripts/base/frameworks/input/binary.zeek @@ -21,6 +21,7 @@ redef InputAscii::unset_field = "-"; abc\x0a\xffdef|DATA2 abc\x7c\xffdef|DATA2 abc\xff\x7cdef|DATA2 +abc\x00\x00\x00\xff\x7cdef|DATA3 #end|2012-07-20-01-49-19 @TEST-END-FILE @@ -37,7 +38,7 @@ event line(description: Input::EventDescription, tpe: Input::Event, a: string, b print outfile, a; print outfile, b; try = try + 1; - if ( try == 3 ) + if ( try == 4 ) { Input::remove("input"); close(outfile);