Skip to content

Commit e5eae47

Browse files
corona10vstinner
authored andcommitted
[2.7] bpo-30119: fix ftplib.FTP.putline() to throw an error for a illegal command (#1214) (#2894)
1 parent 0666d0e commit e5eae47

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

Lib/ftplib.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ def sanitize(self, s):
171171

172172
# Internal: send one line to the server, appending CRLF
173173
def putline(self, line):
174+
if '\r' in line or '\n' in line:
175+
raise ValueError('an illegal newline character should not be contained')
174176
line = line + CRLF
175177
if self.debugging > 1: print '*put*', self.sanitize(line)
176178
self.sock.sendall(line)

Lib/test/test_ftplib.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,9 @@ def test_sanitize(self):
439439
self.assertEqual(self.client.sanitize('PASS 12345'), repr('PASS *****'))
440440

441441
def test_exceptions(self):
442+
self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r\n0')
443+
self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\n0')
444+
self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r0')
442445
self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 400')
443446
self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 499')
444447
self.assertRaises(ftplib.error_perm, self.client.sendcmd, 'echo 500')
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ftplib.FTP.putline() now throws ValueError on commands that contains CR or
2+
LF. Patch by Dong-hee Na.

0 commit comments

Comments
 (0)