diff --git a/xtext_bug.go b/xtext_bug.go new file mode 100644 index 00000000..06828de2 --- /dev/null +++ b/xtext_bug.go @@ -0,0 +1,37 @@ +//+build !hz_gb_2312 + +package maddy + +import ( + "errors" + + "github.com/emersion/go-message/charset" + "golang.org/x/text/encoding" +) + +/* + +Disallow hz-gb-2312 encoding as it can trigger OOM crash. + +https://github.com/emersion/go-message/issues/95 +https://github.com/golang/go/issues/35118 +*/ + +type dummyEncoding struct{} + +func (dummyEncoding) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: dummyEncoding{}} +} +func (dummyEncoding) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{Transformer: dummyEncoding{}} +} + +func (dummyEncoding) Reset() {} + +func (dummyEncoding) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return 0, 0, errors.New("hz-gb-2312 decoding is disabled due to known issues") +} + +func init() { + charset.RegisterEncoding("hz-gb-2312", dummyEncoding{}) +}