[Python-checkins] bpo-44682: Handle invalid arg to pdb's "commands" directive (#27252)

ambv webhook-mailer at python.org
Wed Jul 28 12:55:24 EDT 2021


https://github.com/python/cpython/commit/53b9458f2e9314703a5406ca817d757f1509882a
commit: 53b9458f2e9314703a5406ca817d757f1509882a
branch: main
author: andrei kulakov <andrei.avk at gmail.com>
committer: ambv <lukasz at langa.pl>
date: 2021-07-28T18:55:03+02:00
summary:

bpo-44682: Handle invalid arg to pdb's "commands" directive (#27252)

files:
A Misc/NEWS.d/next/Library/2021-07-20-00-11-47.bpo-44682.3m2qVV.rst
M Lib/pdb.py
M Lib/test/test_pdb.py

diff --git a/Lib/pdb.py b/Lib/pdb.py
index 8aa899f90b7d9..d7110074538ac 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -640,6 +640,12 @@ def do_commands(self, arg):
             except:
                 self.error("Usage: commands [bnum]\n        ...\n        end")
                 return
+        try:
+            self.get_bpbynumber(bnum)
+        except ValueError as err:
+            self.error('cannot set commands: %s' % err)
+            return
+
         self.commands_bnum = bnum
         # Save old definitions for the case of a keyboard interrupt.
         if bnum in self.commands:
diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index 5794e67aafdb1..5bb8069021d89 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -260,6 +260,9 @@ def test_pdb_breakpoint_commands():
     ...     'tbreak 5',
     ...     'continue',  # will stop at temporary breakpoint
     ...     'break',     # make sure breakpoint is gone
+    ...     'commands 10',  # out of range
+    ...     'commands a',   # display help
+    ...     'commands 4',   # already deleted
     ...     'continue',
     ... ]):
     ...    test_function()
@@ -319,6 +322,14 @@ def test_pdb_breakpoint_commands():
     > <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>(5)test_function()
     -> print(3)
     (Pdb) break
+    (Pdb) commands 10
+    *** cannot set commands: Breakpoint number 10 out of range
+    (Pdb) commands a
+    *** Usage: commands [bnum]
+            ...
+            end
+    (Pdb) commands 4
+    *** cannot set commands: Breakpoint 4 already deleted
     (Pdb) continue
     3
     4
diff --git a/Misc/NEWS.d/next/Library/2021-07-20-00-11-47.bpo-44682.3m2qVV.rst b/Misc/NEWS.d/next/Library/2021-07-20-00-11-47.bpo-44682.3m2qVV.rst
new file mode 100644
index 0000000000000..308053a62c389
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-07-20-00-11-47.bpo-44682.3m2qVV.rst
@@ -0,0 +1,2 @@
+Change the :mod:`pdb` *commands* directive to disallow setting commands
+for an invalid breakpoint and to display an appropriate error.



More information about the Python-checkins mailing list