diff --git a/Lib/poplib.py b/Lib/poplib.py index 770819e5c30..1a529d0a138 100644 --- a/Lib/poplib.py +++ b/Lib/poplib.py @@ -282,7 +282,7 @@ class POP3: NB: mailbox is locked by server from here to 'quit()' """ - secret = bytes(secret, self.encoding) + secret = bytes(password, self.encoding) m = self.timestamp.match(self.welcome) if not m: raise error_proto('-ERR APOP not supported by server') diff --git a/Lib/test/test_poplib.py b/Lib/test/test_poplib.py index ad00802a37b..1807bcadeb7 100644 --- a/Lib/test/test_poplib.py +++ b/Lib/test/test_poplib.py @@ -36,7 +36,7 @@ class DummyPOP3Handler(asynchat.async_chat): asynchat.async_chat.__init__(self, conn) self.set_terminator(b"\r\n") self.in_buffer = [] - self.push('+OK dummy pop3 server ready.') + self.push('+OK dummy pop3 server ready. ') def collect_incoming_data(self, data): self.in_buffer.append(data) @@ -104,6 +104,9 @@ class DummyPOP3Handler(asynchat.async_chat): def cmd_rpop(self, arg): self.push('+OK done nothing.') + def cmd_apop(self, arg): + self.push('+OK done nothing.') + class DummyPOP3Server(asyncore.dispatcher, threading.Thread): @@ -169,7 +172,8 @@ class TestPOP3Class(TestCase): self.server.stop() def test_getwelcome(self): - self.assertEqual(self.client.getwelcome(), b'+OK dummy pop3 server ready.') + self.assertEqual(self.client.getwelcome(), + b'+OK dummy pop3 server ready. ') def test_exceptions(self): self.assertRaises(poplib.error_proto, self.client._shortcmd, 'echo -err') @@ -209,6 +213,9 @@ class TestPOP3Class(TestCase): def test_rpop(self): self.assertOK(self.client.rpop('foo')) + def test_apop(self): + self.assertOK(self.client.apop('foo', 'dummypassword')) + def test_top(self): expected = (b'+OK 116 bytes', [b'From: postmaster@python.org', b'Content-Type: text/plain', @@ -239,7 +246,7 @@ if hasattr(poplib, 'POP3_SSL'): self.set_socket(ssl_socket) self.set_terminator(b"\r\n") self.in_buffer = [] - self.push('+OK dummy pop3 server ready.') + self.push('+OK dummy pop3 server ready. ') class TestPOP3_SSLClass(TestPOP3Class): # repeat previous tests by using poplib.POP3_SSL diff --git a/Misc/NEWS b/Misc/NEWS index f7c1302c48d..0de8ad58daf 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -42,6 +42,9 @@ C-API Library ------- +- Issue #6622: Fix "local variable 'secret' referenced before + assignment" bug in POP3.apop. + - Issue #6637: defaultdict.copy() did not work when the default factory was left unspecified. Also, the eval/repr round-trip would fail when the default_factory was None.