@@ -295,7 +295,7 @@ func fixMangledMediaType(mtype, sep string) string {
295
295
}
296
296
297
297
// RFC-2047 encoded attribute name
298
- p = rfc2047AttributeName (p )
298
+ p = rfc2047decode (p )
299
299
300
300
pair := strings .SplitAfter (p , "=" )
301
301
if strings .Contains (mtype , pair [0 ]) {
@@ -606,55 +606,3 @@ func fixUnescapedQuotes(hvalue string) string {
606
606
func whiteSpaceRune (r rune ) bool {
607
607
return r == ' ' || r == '\t' || r == '\r' || r == '\n'
608
608
}
609
-
610
- // rfc2047AttributeName checks if the attribute name is encoded in RFC2047 format
611
- // RFC2047 Example:
612
- // `=?UTF-8?B?bmFtZT0iw7DCn8KUwoo=?=`
613
- func rfc2047AttributeName (name string ) string {
614
- if ! strings .Contains (name , "?=" ) {
615
- return name
616
- }
617
- // copy the string so we can return the original if we encounter any issues
618
- s := name
619
-
620
- // handle n-number of RFC2047 chunk occurrences
621
- count := strings .Count (name , "?=" )
622
- result := & strings.Builder {}
623
- var beginning , ending int
624
- for i := 0 ; i < count ; i ++ {
625
- beginning = strings .Index (s , "=?" )
626
- ending = strings .Index (s , "?=" )
627
-
628
- if beginning == - 1 || ending == - 1 {
629
- // the RFC2047 chunk is either malformed or is not an RFC2047 chunk
630
- return name
631
- }
632
-
633
- _ , err := result .WriteString (s [:beginning ])
634
- if err != nil {
635
- return name
636
- }
637
- _ , err = result .WriteString (decodeHeader (s [beginning : ending + 2 ]))
638
- if err != nil {
639
- return name
640
- }
641
-
642
- s = s [ending + 2 :]
643
- }
644
- _ , err := result .WriteString (s )
645
- if err != nil {
646
- return name
647
- }
648
- keyValuePair := strings .SplitAfter (result .String (), "=" )
649
- if len (keyValuePair ) < 2 {
650
- return result .String ()
651
- }
652
- // Add quotes as needed
653
- if ! strings .HasPrefix (keyValuePair [1 ], "\" " ) {
654
- keyValuePair [1 ] = fmt .Sprintf ("\" %s" , keyValuePair [1 ])
655
- }
656
- if ! strings .HasSuffix (keyValuePair [1 ], "\" " ) {
657
- keyValuePair [1 ] = fmt .Sprintf ("%s\" " , keyValuePair [1 ])
658
- }
659
- return strings .Join (keyValuePair , "" )
660
- }
0 commit comments