gh-93010: InvalidHeaderError used but nonexistent (GH-93015)

* fix issue 93010

Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
(cherry picked from commit 71abeb0895)

Co-authored-by: oda-gitso <105083118+oda-gitso@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2022-05-23 09:57:12 -07:00 committed by GitHub
parent fc31e2de3c
commit a509d2674a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 10 deletions

View File

@ -2379,7 +2379,7 @@ def get_section(value):
digits += value[0] digits += value[0]
value = value[1:] value = value[1:]
if digits[0] == '0' and digits != '0': if digits[0] == '0' and digits != '0':
section.defects.append(errors.InvalidHeaderError( section.defects.append(errors.InvalidHeaderDefect(
"section number has an invalid leading 0")) "section number has an invalid leading 0"))
section.number = int(digits) section.number = int(digits)
section.append(ValueTerminal(digits, 'digits')) section.append(ValueTerminal(digits, 'digits'))

View File

@ -19,24 +19,25 @@ import email
import email.policy import email.policy
from email.charset import Charset from email.charset import Charset
from email.header import Header, decode_header, make_header
from email.parser import Parser, HeaderParser
from email.generator import Generator, DecodedGenerator, BytesGenerator from email.generator import Generator, DecodedGenerator, BytesGenerator
from email.header import Header, decode_header, make_header
from email.headerregistry import HeaderRegistry
from email.message import Message from email.message import Message
from email.mime.application import MIMEApplication from email.mime.application import MIMEApplication
from email.mime.audio import MIMEAudio from email.mime.audio import MIMEAudio
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.message import MIMEMessage from email.mime.message import MIMEMessage
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.nonmultipart import MIMENonMultipart from email.mime.nonmultipart import MIMENonMultipart
from email import utils from email.mime.text import MIMEText
from email import errors from email.parser import Parser, HeaderParser
from email import encoders
from email import iterators
from email import base64mime from email import base64mime
from email import encoders
from email import errors
from email import iterators
from email import quoprimime from email import quoprimime
from email import utils
from test.support import threading_helper from test.support import threading_helper
from test.support.os_helper import unlink from test.support.os_helper import unlink
@ -5541,7 +5542,12 @@ class TestSigned(TestEmailBase):
result = fp.getvalue() result = fp.getvalue()
self._signed_parts_eq(original, result) self._signed_parts_eq(original, result)
class TestHeaderRegistry(TestEmailBase):
# See issue gh-93010.
def test_HeaderRegistry(self):
reg = HeaderRegistry()
a = reg('Content-Disposition', 'attachment; 0*00="foo"')
self.assertIsInstance(a.defects[0], errors.InvalidHeaderDefect)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@ -0,0 +1 @@
In a very special case, the email package tried to append the nonexistent ``InvalidHeaderError`` to the defect list. It should have been ``InvalidHeaderDefect``.