diff --git a/aux/binpac b/aux/binpac index 032b4e0f02..a3a9410ded 160000 --- a/aux/binpac +++ b/aux/binpac @@ -1 +1 @@ -Subproject commit 032b4e0f028a08257be0c703b27a7559e57bd40a +Subproject commit a3a9410dedc842f6bb9859642f334ed354633b57 diff --git a/aux/bro-aux b/aux/bro-aux index 04d149a194..d68b98bb99 160000 --- a/aux/bro-aux +++ b/aux/bro-aux @@ -1 +1 @@ -Subproject commit 04d149a194e06ed5410ea3af924ff48b9129cd3b +Subproject commit d68b98bb995a105b257f805ec4ff22c4929c7476 diff --git a/aux/broccoli b/aux/broccoli index 89620cc8e5..03e6d398ed 160000 --- a/aux/broccoli +++ b/aux/broccoli @@ -1 +1 @@ -Subproject commit 89620cc8e500855fb763281000cbe2a24290a829 +Subproject commit 03e6d398edf422140ba9f50e6fabbec33ee2f3cb diff --git a/aux/broctl b/aux/broctl index c7499ee54f..ad8dfaba0c 160000 --- a/aux/broctl +++ b/aux/broctl @@ -1 +1 @@ -Subproject commit c7499ee54f50bca65606dc3edc1aff132d93af80 +Subproject commit ad8dfaba0c0c784060aa6f0c5e1fcf62244b1a51 diff --git a/src/Desc.cc b/src/Desc.cc index 454de549ef..d7106a5b6a 100644 --- a/src/Desc.cc +++ b/src/Desc.cc @@ -232,35 +232,39 @@ static const char* find_first_unprintable(ODesc* d, const char* bytes, unsigned void ODesc::AddBytes(const void* bytes, unsigned int n) { + if ( ! escape ) + { + AddBytesRaw(bytes, n); + return; + } + const char* s = (const char*) bytes; const char* e = (const char*) bytes + n; while ( s < e ) { - const char* t1 = escape ? (const char*) memchr(s, escape[0], e - s) : e; - const char* t2 = find_first_unprintable(this, s, t1 ? e - t1 : e - s); + const char* t1 = (const char*) memchr(s, escape[0], e - s); - if ( t2 && (t2 < t1 || ! t1) ) + if ( ! t1 ) + t1 = e; + + const char* t2 = find_first_unprintable(this, s, t1 - s); + + if ( t2 && t2 < t1 ) { AddBytesRaw(s, t2 - s); char hex[6] = "\\x00"; hex[2] = hex_chars[((*t2) & 0xf0) >> 4]; hex[3] = hex_chars[(*t2) & 0x0f]; - AddBytesRaw(hex, sizeof(hex)); + AddBytesRaw(hex, 4); s = t2 + 1; continue; } - if ( ! escape ) - break; - - if ( ! t1 ) - break; - if ( memcmp(t1, escape, escape_len) != 0 ) - break; + break; AddBytesRaw(s, t1 - s); @@ -269,7 +273,7 @@ void ODesc::AddBytes(const void* bytes, unsigned int n) char hex[5] = "\\x00"; hex[2] = hex_chars[((*t1) & 0xf0) >> 4]; hex[3] = hex_chars[(*t1) & 0x0f]; - AddBytesRaw(hex, sizeof(hex)); + AddBytesRaw(hex, 4); ++t1; } diff --git a/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-binary/ssh.log b/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-binary/ssh.log index fb68b42aef..7f9371f939 100644 Binary files a/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-binary/ssh.log and b/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-binary/ssh.log differ diff --git a/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-escape-odd-url/http.log b/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-escape-odd-url/http.log new file mode 100644 index 0000000000..e76a706ebe --- /dev/null +++ b/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-escape-odd-url/http.log @@ -0,0 +1,5 @@ +#separator \x09 +#path http +#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p method host uri referrer user_agent request_content_length response_content_length status_code status_msg filename tags username password proxied mime_type md5 extraction_file +#types time string addr port addr port string string string string string count count count string string table string string table string string file +1315799856.264750 UWkUyAuUGXf 10.0.1.104 64216 193.40.5.162 80 GET lepo.it.da.ut.ee /~cect/teoreetilised seminarid_2010/arheoloogia_uurimisr\xfchma_seminar/Joyce et al - The Languages of Archaeology ~ Dialogue, Narrative and Writing.pdf - Wget/1.12 (darwin10.8.0) - 346 404 Not Found - - - - - text/html - - diff --git a/testing/btest/Baseline/scripts.base.frameworks.logging.types/ssh.log b/testing/btest/Baseline/scripts.base.frameworks.logging.types/ssh.log index d1e6086fc4..ffd579c224 100644 Binary files a/testing/btest/Baseline/scripts.base.frameworks.logging.types/ssh.log and b/testing/btest/Baseline/scripts.base.frameworks.logging.types/ssh.log differ diff --git a/testing/btest/Traces/www-odd-url.trace b/testing/btest/Traces/www-odd-url.trace new file mode 100644 index 0000000000..2fd86c50c2 Binary files /dev/null and b/testing/btest/Traces/www-odd-url.trace differ diff --git a/testing/btest/scripts/base/frameworks/logging/ascii-escape-odd-url.bro b/testing/btest/scripts/base/frameworks/logging/ascii-escape-odd-url.bro new file mode 100644 index 0000000000..9df48edbb6 --- /dev/null +++ b/testing/btest/scripts/base/frameworks/logging/ascii-escape-odd-url.bro @@ -0,0 +1,4 @@ +# +# @TEST-EXEC: bro -C -r $TRACES/www-odd-url.trace +# @TEST-EXEC: btest-diff http.log +