From 83fb5df260d5d98a7679d9a69cacb26f2e1f8b09 Mon Sep 17 00:00:00 2001 From: Cecylia Bocovich <cohosh@torproject.org> Date: Wed, 8 May 2019 12:31:53 -0400 Subject: [PATCH] Fixed log scrubber to not scrub timestamps Our log scrubber was a bit over-zealous and was scrubbing timestamps as well. While we're still over-scrubbing, we're now more precise and ensure that compressed IPv6 addresses have "::" --- common/safelog/log.go | 9 ++++++--- common/safelog/log_test.go | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/common/safelog/log.go b/common/safelog/log.go index 82295846..12416760 100644 --- a/common/safelog/log.go +++ b/common/safelog/log.go @@ -10,10 +10,13 @@ import ( ) const ipv4Address = `\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}` -const ipv6Address = `(([0-9a-fA-F]{0,4}:){2,7}([0-9a-fA-F]{0,4})?(` + ipv4Address + `))` + - `|(([0-9a-fA-F]{0,4}:){2,7}([0-9a-fA-F]{0,4})?)` +const ipv6Address = `([0-9a-fA-F]{0,4}:){5,7}([0-9a-fA-F]{0,4})?` +const ipv6Compressed = `([0-9a-fA-F]{0,4}:){0,5}([0-9a-fA-F]{0,4})?(::)([0-9a-fA-F]{0,4}:){0,5}([0-9a-fA-F]{0,4})?` +const ipv6Full = `(` + ipv6Address + `(` + ipv4Address + `))` + + `|(` + ipv6Compressed + `(` + ipv4Address + `))` + + `|(` + ipv6Address + `)` + `|(` + ipv6Compressed + `)` const optionalPort = `(:\d{1,5})?` -const addressPattern = `((` + ipv4Address + `)|(\[(` + ipv6Address + `)\])|(` + ipv6Address + `))` + optionalPort +const addressPattern = `((` + ipv4Address + `)|(\[(` + ipv6Full + `)\])|(` + ipv6Full + `))` + optionalPort const fullAddrPattern = `(^|\s|[^\w:])` + addressPattern + `(\s|(:\s)|[^\w:]|$)` var scrubberPatterns = []*regexp.Regexp{ diff --git a/common/safelog/log_test.go b/common/safelog/log_test.go index 0f342deb..16edbc9d 100644 --- a/common/safelog/log_test.go +++ b/common/safelog/log_test.go @@ -72,6 +72,11 @@ func TestLogScrubberMessages(t *testing.T) { "(1:2:3:4:c:d:e:f) {1:2:3:4:c:d:e:f}", "([scrubbed]) {[scrubbed]}\n", }, + { + //Make sure it doesn't scrub timestamps + "2019/05/08 15:37:31 starting", + "2019/05/08 15:37:31 starting\n", + }, } { var buff bytes.Buffer log.SetFlags(0) //remove all extra log output for test comparisons @@ -102,9 +107,12 @@ func TestLogScrubberGoodFormats(t *testing.T) { "[1:2:3:4:c:d:e:f]:55", "[1111:2222:3333:4444:CCCC:DDDD:EEEE:FFFF]:65535", // compressed IPv6 + "::f", "::d:e:f", "1:2:3::", "1:2:3::d:e:f", + "1:2:3:d:e:f::", + "::1:2:3:d:e:f", "1111:2222:3333::DDDD:EEEE:FFFF", // compressed IPv6 with brackets "[::d:e:f]", -- GitLab