From 8a0fbd75a54c27ff2ae624ac2775bf752cdbceb4 Mon Sep 17 00:00:00 2001 From: Axel Wagner Date: Wed, 14 Feb 2024 09:38:46 +0100 Subject: encoding/xml: reject XML declaration after start of document The XML specification requires an XML declaration, if present, to only appear at the very beginning of the document, not even preceded by whitespace. The parser currently accepts it at any part of the input. Rejecting whitespace at the beginning of the file might break too many users. This change instead only rejects an XML declaration preceded by a non-whitespace token *and* allows the Encoder to emit whitespace before an XML declaration. This means that a token stream produced by the Decoder can be passed to the Encoder without error, while we still don't emit clearly invalid XML. This might break programs depending on Decoder allowing arbitrary XML before the XML declaration. Fixes #65691. Change-Id: Ib1d4b3116aee63f40fd377f90595780b4befd1ee Reviewed-on: https://go-review.googlesource.com/c/go/+/564035 Auto-Submit: Ian Lance Taylor LUCI-TryBot-Result: Go LUCI Reviewed-by: Than McIntosh Reviewed-by: Ian Lance Taylor --- src/encoding/xml/xml_test.go | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/encoding/xml/xml_test.go') diff --git a/src/encoding/xml/xml_test.go b/src/encoding/xml/xml_test.go index 4bec4e7f1e..2c985f7c70 100644 --- a/src/encoding/xml/xml_test.go +++ b/src/encoding/xml/xml_test.go @@ -1350,10 +1350,12 @@ func TestParseErrors(t *testing.T) { // Header-related errors. {``, `unsupported version "1.1"; only version 1.0 is supported`}, + {``, `XML declaration after start of document`}, // Cases below are for "no errors". {withDefaultHeader(``), ``}, {withDefaultHeader(``), ``}, + {` `, ``}, } for _, test := range tests { -- cgit v1.3