From 9e7c41e4b5b4c5501eae673e2fa2e0506733f43c Mon Sep 17 00:00:00 2001 From: peace-maker Date: Wed, 14 Aug 2024 15:57:38 +0200 Subject: [PATCH] Fix mypy errors reported with version 1.11.1 (#2359) * Fix mypy errors reported with version 1.11.1 * Remove pyright None check --- pwndbg/commands/argv.py | 23 +++++++++++++---------- pwndbg/commands/segments.py | 6 +++--- pwndbg/gdblib/regs.py | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/pwndbg/commands/argv.py b/pwndbg/commands/argv.py index c63528230..c094a5f8f 100644 --- a/pwndbg/commands/argv.py +++ b/pwndbg/commands/argv.py @@ -71,11 +71,11 @@ class argv_function(gdb.Function): def __init__(self) -> None: super().__init__("argv") - def invoke(self, number=0): - number = int(number) + def invoke(self, number_value: gdb.Value = gdb.Value(0), *args: gdb.Value) -> gdb.Value: + number = int(number_value) if number > pwndbg.gdblib.argv.argc: - return 0 + return gdb.Value(0) ppchar = pwndbg.gdblib.typeinfo.pchar.pointer() value = gdb.Value(pwndbg.gdblib.argv.argv) @@ -94,11 +94,11 @@ class envp_function(gdb.Function): def __init__(self) -> None: super().__init__("envp") - def invoke(self, number=0): - number = int(number) + def invoke(self, number_value: gdb.Value = gdb.Value(0), *args: gdb.Value) -> gdb.Value: + number = int(number_value) if number > pwndbg.gdblib.argv.envc: - return pwndbg.gdblib.typeinfo.void + return pwndbg.gdblib.typeinfo.void.optimized_out() ppchar = pwndbg.gdblib.typeinfo.pchar.pointer() value = gdb.Value(pwndbg.gdblib.argv.envp) @@ -117,7 +117,7 @@ class argc_function(gdb.Function): def __init__(self) -> None: super().__init__("argc") - def invoke(self, number=0): + def invoke(self, *args: gdb.Value) -> int: return pwndbg.gdblib.argv.argc @@ -132,8 +132,11 @@ class environ_function(gdb.Function): def __init__(self) -> None: super().__init__("environ") - def invoke(self, name): - name = name.string() + "=" + def invoke(self, name_value: gdb.Value = gdb.Value(""), *args: gdb.Value) -> gdb.Value: + name = name_value.string() + if not name: + raise gdb.GdbError("No environment variable name provided") + name += "=" ppchar = pwndbg.gdblib.typeinfo.pchar.pointer() value = gdb.Value(pwndbg.gdblib.argv.envp) envp = value.cast(ppchar) @@ -144,7 +147,7 @@ class environ_function(gdb.Function): if sz.startswith(name): return ptr - return pwndbg.gdblib.typeinfo.void + return pwndbg.gdblib.typeinfo.void.optimized_out() environ_function() diff --git a/pwndbg/commands/segments.py b/pwndbg/commands/segments.py index ae662ddd3..96099a01c 100644 --- a/pwndbg/commands/segments.py +++ b/pwndbg/commands/segments.py @@ -10,13 +10,13 @@ from pwndbg.commands import CommandCategory class segment(gdb.Function): """Get the flat address of memory based off of the named segment register.""" - def __init__(self, name) -> None: + def __init__(self, name: str) -> None: super().__init__(name) self.name = name - def invoke(self, arg=0): + def invoke(self, arg: gdb.Value = gdb.Value(0), *args: gdb.Value) -> int: result = getattr(pwndbg.gdblib.regs, self.name) - return result + arg + return result + int(arg) # TODO/FIXME: This should be defined only for x86 and x86_64 diff --git a/pwndbg/gdblib/regs.py b/pwndbg/gdblib/regs.py index c9bab8699..6f06357f4 100644 --- a/pwndbg/gdblib/regs.py +++ b/pwndbg/gdblib/regs.py @@ -195,7 +195,7 @@ class module(ModuleType): elif isinstance(regset, dict): # regs.flags retval.extend(regset.keys()) else: - retval.append(regset) # type: ignore[arg-type] + retval.append(regset) return retval def fix(self, expression: str) -> str: