From c5a19f7cdca94fd90c89ef078efe9a960d52cfb2 Mon Sep 17 00:00:00 2001 From: Seth Hall Date: Fri, 22 Apr 2011 08:00:28 -0400 Subject: [PATCH] Fixed another do_split bug and included a test for the fix. --- src/strings.bif | 5 ++++- testing/btest/Baseline/bifs.string_splitting/out | 9 +++++++++ testing/btest/bifs/string_splitting.bro | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings.bif b/src/strings.bif index 191d059b84..485fcdb108 100644 --- a/src/strings.bif +++ b/src/strings.bif @@ -244,8 +244,11 @@ Val* do_split(StringVal* str_val, RE_Matcher* re, TableVal* other_sep, --n; } - if ( num_sep >= max_num_sep ) + if ( max_num_sep && num_sep >= max_num_sep ) + { offset = end_of_s - s; + n=0; + } Val* ind = new Val(++num, TYPE_COUNT); a->Assign(ind, new StringVal(offset, (const char*) s)); diff --git a/testing/btest/Baseline/bifs.string_splitting/out b/testing/btest/Baseline/bifs.string_splitting/out index 7e0c0dfcfa..31bd2c963a 100644 --- a/testing/btest/Baseline/bifs.string_splitting/out +++ b/testing/btest/Baseline/bifs.string_splitting/out @@ -2,3 +2,12 @@ [1] = X-Mailer, [2] = Testing Test (http://www.example.com) } +{ +[1] = A , +[6] = =, +[4] = =, +[7] = D, +[5] = C , +[2] = =, +[3] = B +} diff --git a/testing/btest/bifs/string_splitting.bro b/testing/btest/bifs/string_splitting.bro index 1920db75a2..44068fe510 100644 --- a/testing/btest/bifs/string_splitting.bro +++ b/testing/btest/bifs/string_splitting.bro @@ -6,4 +6,7 @@ event bro_init() { local a = "X-Mailer: Testing Test (http://www.example.com)"; print split1(a, /:[[:blank:]]*/); + + a = "A = B = C = D"; + print split_all(a, /=/); }