author | John Beck <John.Beck@Oracle.COM> |
Fri, 13 Feb 2015 08:14:21 -0800 | |
branch | s11-update |
changeset 3807 | 5252dce7cc09 |
permissions | -rw-r--r-- |
3807
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
1 |
This patch comes from upstream: http://bugs.python.org/issue16042 |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
2 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
3 |
--- Python-2.6.8/Lib/smtplib.py |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
4 |
+++ Python-2.6.8/Lib/smtplib.py |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
5 |
@@ -57,6 +57,7 @@ from sys import stderr |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
6 |
SMTP_PORT = 25 |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
7 |
SMTP_SSL_PORT = 465 |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
8 |
CRLF="\r\n" |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
9 |
+_MAXLINE = 8192 # more than 8 times larger than RFC 821, 4.5.3 |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
10 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
11 |
OLDSTYLE_AUTH = re.compile(r"auth=(.*)", re.I) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
12 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
13 |
@@ -170,10 +171,14 @@ else: |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
14 |
def __init__(self, sslobj): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
15 |
self.sslobj = sslobj |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
16 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
17 |
- def readline(self): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
18 |
+ def readline(self, size=-1): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
19 |
+ if size < 0: |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
20 |
+ size = None |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
21 |
str = "" |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
22 |
chr = None |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
23 |
while chr != "\n": |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
24 |
+ if size is not None and len(str) >= size: |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
25 |
+ break |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
26 |
chr = self.sslobj.read(1) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
27 |
if not chr: break |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
28 |
str += chr |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
29 |
@@ -334,11 +339,13 @@ class SMTP: |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
30 |
if self.file is None: |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
31 |
self.file = self.sock.makefile('rb') |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
32 |
while 1: |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
33 |
- line = self.file.readline() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
34 |
+ line = self.file.readline(_MAXLINE + 1) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
35 |
if line == '': |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
36 |
self.close() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
37 |
raise SMTPServerDisconnected("Connection unexpectedly closed") |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
38 |
- if self.debuglevel > 0: print>>stderr, 'reply:', repr(line) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
39 |
+ if self.debuglevel > 0: print >>stderr, 'reply:', repr(line) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
40 |
+ if len(line) > _MAXLINE: |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
41 |
+ raise SMTPResponseException(500, "Line too long.") |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
42 |
resp.append(line[4:].strip()) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
43 |
code=line[:3] |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
44 |
# Check that the error code is syntactically correct. |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
45 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
46 |
--- Python-2.6.8/Lib/test/test_smtplib.py |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
47 |
+++ Python-2.6.8/Lib/test/test_smtplib.py |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
48 |
@@ -273,6 +273,32 @@ class BadHELOServerTests(TestCase): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
49 |
HOST, self.port, 'localhost', 3) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
50 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
51 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
52 |
+class TooLongLineTests(TestCase): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
53 |
+ respdata = '250 OK' + ('.' * smtplib._MAXLINE * 2) + '\n' |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
54 |
+ |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
55 |
+ def setUp(self): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
56 |
+ self.old_stdout = sys.stdout |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
57 |
+ self.output = StringIO.StringIO() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
58 |
+ sys.stdout = self.output |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
59 |
+ |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
60 |
+ self.evt = threading.Event() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
61 |
+ self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
62 |
+ self.sock.settimeout(15) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
63 |
+ self.port = test_support.bind_port(self.sock) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
64 |
+ servargs = (self.evt, self.respdata, self.sock) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
65 |
+ threading.Thread(target=server, args=servargs).start() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
66 |
+ self.evt.wait() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
67 |
+ self.evt.clear() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
68 |
+ |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
69 |
+ def tearDown(self): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
70 |
+ self.evt.wait() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
71 |
+ sys.stdout = self.old_stdout |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
72 |
+ |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
73 |
+ def testLineTooLong(self): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
74 |
+ self.assertRaises(smtplib.SMTPResponseException, smtplib.SMTP, |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
75 |
+ HOST, self.port, 'localhost', 3) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
76 |
+ |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
77 |
+ |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
78 |
sim_users = {'[email protected]':'John A', |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
79 |
'[email protected]':'Sally B', |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
80 |
'[email protected]':'Ruth C', |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
81 |
@@ -482,7 +508,8 @@ class SMTPSimTests(TestCase): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
82 |
def test_main(verbose=None): |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
83 |
test_support.run_unittest(GeneralTests, DebuggingServerTests, |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
84 |
NonConnectingTests, |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
85 |
- BadHELOServerTests, SMTPSimTests) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
86 |
+ BadHELOServerTests, SMTPSimTests, |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
87 |
+ TooLongLineTests) |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
88 |
|
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
89 |
if __name__ == '__main__': |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
90 |
test_main() |
5252dce7cc09
20537400 problem in UTILITY/PYTHON
John Beck <John.Beck@Oracle.COM>
parents:
diff
changeset
|
91 |