From 1aabc9147833c3a534b82bde119625ba605c20ed Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Sun, 23 Jul 2017 02:20:22 +0900 Subject: [PATCH] [2.7] bpo-30119: fix ftplib.FTP.putline() to throw an error for a illegal command (#1214) --- Lib/ftplib.py | 2 ++ Lib/test/test_ftplib.py | 3 +++ .../next/Library/2017-07-26-22-02-07.bpo-30119.DZ6C_S.rst | 2 ++ 3 files changed, 7 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2017-07-26-22-02-07.bpo-30119.DZ6C_S.rst diff --git a/Lib/ftplib.py b/Lib/ftplib.py index 153647ba758ee0d..6644554792791bd 100644 --- a/Lib/ftplib.py +++ b/Lib/ftplib.py @@ -171,6 +171,8 @@ def sanitize(self, s): # Internal: send one line to the server, appending CRLF def putline(self, line): + if '\r' in line or '\n' in line: + raise ValueError('an illegal newline character should not be contained') line = line + CRLF if self.debugging > 1: print '*put*', self.sanitize(line) self.sock.sendall(line) diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py index 044ce4594c971fd..fdfa31387cb4b99 100644 --- a/Lib/test/test_ftplib.py +++ b/Lib/test/test_ftplib.py @@ -439,6 +439,9 @@ def test_sanitize(self): self.assertEqual(self.client.sanitize('PASS 12345'), repr('PASS *****')) def test_exceptions(self): + self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r\n0') + self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\n0') + self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r0') self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 400') self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 499') self.assertRaises(ftplib.error_perm, self.client.sendcmd, 'echo 500') diff --git a/Misc/NEWS.d/next/Library/2017-07-26-22-02-07.bpo-30119.DZ6C_S.rst b/Misc/NEWS.d/next/Library/2017-07-26-22-02-07.bpo-30119.DZ6C_S.rst new file mode 100644 index 000000000000000..a37d37038424c6f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2017-07-26-22-02-07.bpo-30119.DZ6C_S.rst @@ -0,0 +1,2 @@ +ftplib.FTP.putline() now throws ValueError on commands that contains CR or +LF. Patch by Dong-hee Na.