From 53b9458f2e9314703a5406ca817d757f1509882a Mon Sep 17 00:00:00 2001 From: andrei kulakov Date: Wed, 28 Jul 2021 12:55:03 -0400 Subject: bpo-44682: Handle invalid arg to pdb's "commands" directive (#27252) --- Lib/pdb.py | 6 ++++++ Lib/test/test_pdb.py | 11 +++++++++++ .../next/Library/2021-07-20-00-11-47.bpo-44682.3m2qVV.rst | 2 ++ 3 files changed, 19 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2021-07-20-00-11-47.bpo-44682.3m2qVV.rst diff --git a/Lib/pdb.py b/Lib/pdb.py index 8aa899f..d711007 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -640,6 +640,12 @@ class Pdb(bdb.Bdb, cmd.Cmd): 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 5794e67..5bb8069 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(): > (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 0000000..308053a --- /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. -- cgit v0.12