diff --git a/internal/digest/digest.go b/internal/digest/digest.go index c55f9f8..b5d2676 100644 --- a/internal/digest/digest.go +++ b/internal/digest/digest.go @@ -577,11 +577,15 @@ func min(a, b int) int { return b } -var documentTag = regexp.MustCompile(`(?i)= 2 && m[1] == '/' { + if strings.Contains(m, "/") { return "</document" } return "<document" diff --git a/internal/digest/digest_test.go b/internal/digest/digest_test.go index 8644550..3de0107 100644 --- a/internal/digest/digest_test.go +++ b/internal/digest/digest_test.go @@ -109,6 +109,17 @@ func TestDocumentTagStaysInFrame(t *testing.T) { } } +func TestFenceSpaceAndZW(t *testing.T) { + zw := "hello \n" + out := fenceDocument(zw + "") + if strings.Contains(out, "") || strings.Contains(strings.ToLower(out), "") { + t.Fatalf("unfenced: %q", out) + } + if !strings.Contains(out, "</document") { + t.Fatalf("missing escape: %q", out) + } +} + func TestFallbackOnTimeout(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { time.Sleep(200 * time.Millisecond)