mirror of https://github.com/pwndbg/pwndbg.git
* splitting tests passed and skipped variable into two, solving issue #2485 * Fixing bugs in PR #2495 * jemalloc.py: remove unused Arena class (#2492) * Fixes canary command when no canaries are there (#2496) Fixes the following bug uncovered by our test_commands[canary] test suite: ``` (.venv) root@pwndbg:~/pwndbg# RUN_FLAKY=1 ./tests.sh 'test_commands' --pdb Will run tests in serial and with Python debugger ZIGPATH set to /root/pwndbg/.zig make: Nothing to be done for 'all'. pwndbg: loaded 173 pwndbg commands and 47 shell commands. Type pwndbg [--shell | --all] [filter] for a list. pwndbg: created $rebase, $base, $bn_sym, $bn_var, $bn_eval, $ida GDB functions (can be used with print/break) Launching pytest with args: ['/root/pwndbg/tests/gdb-tests/tests/test_commands.py::test_commands[canary]', '-vvv', '-s', '--showlocals', '--color=yes', '--pdb'] ======================================================================== test session starts ======================================================================== platform linux -- Python 3.11.6, pytest-8.0.2, pluggy-1.5.0 -- /usr/bin/python cachedir: .pytest_cache rootdir: /root/pwndbg/tests plugins: cov-4.1.0 collected 1 item gdb-tests/tests/test_commands.py::test_commands[canary] Running command canary This GDB supports auto-downloading debuginfo from the following URLs: <https://debuginfod.ubuntu.com> Debuginfod has been disabled. To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit. Program stopped. 0x00007ffff7fe4b40 in _start () from /lib64/ld-linux-x86-64.so.2 AT_RANDOM = 0x7fffffffe3d9 # points to (not masked) global canary value Canary = 0x37492280ae2b3000 (may be incorrect on != glibc) No canaries found. Traceback (most recent call last): File "/root/pwndbg/pwndbg/commands/__init__.py", line 187, in __call__ return self.function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/pwndbg/pwndbg/commands/__init__.py", line 378, in _OnlyWhenRunning return function(*a, **kw) ^^^^^^^^^^^^^^^^^^ File "/root/pwndbg/pwndbg/commands/canary.py", line 91, in canary if some_canaries_not_shown is True: ^^^^^^^^^^^^^^^^^^^^^^^ UnboundLocalError: cannot access local variable 'some_canaries_not_shown' where it is not associated with a value During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/root/pwndbg/pwndbg/dbg/gdb.py", line 871, in invoke self.handler(self.debugger, args, from_tty) File "/root/pwndbg/pwndbg/commands/__init__.py", line 105, in _handler self.invoke(arguments, is_interactive) File "/root/pwndbg/pwndbg/commands/__init__.py", line 153, in invoke self(*args, **kwargs) File "/root/pwndbg/pwndbg/commands/__init__.py", line 192, in __call__ pwndbg.exception.handle(self.function.__name__) File "/root/pwndbg/pwndbg/exception.py", line 106, in handle raise e File "/root/pwndbg/pwndbg/commands/__init__.py", line 187, in __call__ return self.function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/pwndbg/pwndbg/commands/__init__.py", line 378, in _OnlyWhenRunning return function(*a, **kw) ^^^^^^^^^^^^^^^^^^ File "/root/pwndbg/pwndbg/commands/canary.py", line 91, in canary if some_canaries_not_shown is True: ^^^^^^^^^^^^^^^^^^^^^^^ UnboundLocalError: cannot access local variable 'some_canaries_not_shown' where it is not associated with a value ``` * Fix gdt command: require address argument (#2497) Before this commit, the `gdt` command incorrectly did not require the `address` argument, while it was required. Because of that, the command crashed like this: ``` pwndbg> gdt 'gdt': Decode X86-64 GDT entries at address See also: * https://wiki.osdev.org/Global_Descriptor_Table * https://wiki.osdev.org/GDT_Tutorial Note: In 64-bit mode, the Base and Limit values are ignored, each descriptor covers the entire linear address space regardless of what they are set to. Exception occurred: gdt: int() argument must be a string, a bytes-like object or a real number, not 'NoneType' (<class 'TypeError'>) For more info invoke `set exception-verbose on` and rerun the command or debug it by yourself with `set exception-debugger on` ``` * Add better handling for exceptions originating in execution controllers under LLDB (#2488) * Fix try_free command: make addr argument required (#2499) Fixes the following problem: ``` pwndbg> try_free TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType' > /root/pwndbg/pwndbg/commands/heap.py(1195)try_free() 1194 def try_free(addr: str | int) -> None: -> 1195 addr = int(addr) 1196 ``` * Fix ctxp command (#2498) * Fix ctxp and ctxn commands Before this commit the `ctxp` could fail with: ``` Launching pytest with args: ['/root/pwndbg/tests/gdb-tests/tests/test_commands.py::test_commands[ctxp]', '-vvv', '-s', '--showlocals', '--color=yes', '--pdb'] ======================================================================== test session starts ======================================================================== platform linux -- Python 3.11.6, pytest-8.0.2, pluggy-1.5.0 -- /usr/bin/python cachedir: .pytest_cache rootdir: /root/pwndbg/tests plugins: cov-4.1.0 collected 1 item gdb-tests/tests/test_commands.py::test_commands[ctxp] Running command ctxp This GDB supports auto-downloading debuginfo from the following URLs: <https://debuginfod.ubuntu.com> Debuginfod has been disabled. To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit. Program stopped. 0x00007ffff7fe4b40 in _start () from /lib64/ld-linux-x86-64.so.2 Traceback (most recent call last): File "/root/pwndbg/pwndbg/commands/__init__.py", line 187, in __call__ return self.function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/pwndbg/pwndbg/commands/context.py", line 363, in contextprev longest_history = max(len(h) for h in context_history.values()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: max() arg is an empty sequence During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/root/pwndbg/pwndbg/dbg/gdb.py", line 871, in invoke self.handler(self.debugger, args, from_tty) File "/root/pwndbg/pwndbg/commands/__init__.py", line 105, in _handler self.invoke(arguments, is_interactive) File "/root/pwndbg/pwndbg/commands/__init__.py", line 153, in invoke self(*args, **kwargs) File "/root/pwndbg/pwndbg/commands/__init__.py", line 192, in __call__ pwndbg.exception.handle(self.function.__name__) File "/root/pwndbg/pwndbg/exception.py", line 106, in handle raise e File "/root/pwndbg/pwndbg/commands/__init__.py", line 187, in __call__ return self.function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/pwndbg/pwndbg/commands/context.py", line 363, in contextprev longest_history = max(len(h) for h in context_history.values()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: max() arg is an empty sequence XFAIL (flaky test) ``` * fix --------- Co-authored-by: Disconnect3d <dominik.b.czarnota@gmail.com> Co-authored-by: Matt. <dark.ryu.550@gmail.com>pull/2501/head
parent
cf9f3185fc
commit
f7bb9b59a8
Loading…
Reference in new issue