Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Type hinting fixes - part 3 #856

Merged
merged 2 commits into from
Oct 2, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
53 changes: 27 additions & 26 deletions gef.py
Original file line number Diff line number Diff line change
Expand Up @@ -3480,7 +3480,7 @@ def hook_stop_handler(_: "gdb.StopEvent") -> None:
return


def new_objfile_handler(evt: "gdb.Event") -> None:
def new_objfile_handler(evt: Optional["gdb.NewObjFileEvent"]) -> None:
"""GDB event handler for new object file cases."""
reset_all_caches()
try:
Expand Down Expand Up @@ -4689,7 +4689,7 @@ class PieBreakpointCommand(GenericCommand):

@parse_arguments({"offset": ""}, {})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not args.offset:
self.usage()
return
Expand Down Expand Up @@ -4721,7 +4721,7 @@ class PieInfoCommand(GenericCommand):

@parse_arguments({"breakpoints": [-1,]}, {})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if args.breakpoints[0] == -1:
# No breakpoint info needed
bps = gef.session.pie_breakpoints.values()
Expand All @@ -4748,7 +4748,7 @@ class PieDeleteCommand(GenericCommand):
@parse_arguments({"breakpoints": [-1,]}, {})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
global gef
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if args.breakpoints[0] == -1:
# no arg, delete all
to_delete = list(gef.session.pie_breakpoints.values())
Expand Down Expand Up @@ -5392,7 +5392,7 @@ def __init__(self) -> None:

@parse_arguments({"type": "", "address": ""}, {})
def do_invoke(self, *_: Any, **kwargs: Dict[str, Any]) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not args.type:
gdb.execute("pcustom list")
return
Expand Down Expand Up @@ -5904,7 +5904,7 @@ def do_invoke(self, _: List[str], **kwargs: Any) -> None:
return

# argument check
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not args.host or not args.port:
err("Missing parameters")
return
Expand Down Expand Up @@ -5945,7 +5945,7 @@ def __init__(self) -> None:
@only_if_gdb_running
@parse_arguments({"address": "$pc"}, {"--nb": 0, })
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
address = parse_address(args.address)
nop = gef.arch.nop_insn
number_of_bytes = args.nb or 1
Expand Down Expand Up @@ -5983,7 +5983,7 @@ def __init__(self) -> None:
@only_if_gdb_running
@parse_arguments({"address": ""}, {("-r", "--retval"): 0})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
loc = args.address if args.address else f"*{gef.arch.pc:#x}"
StubBreakpoint(loc, args.retval)
return
Expand Down Expand Up @@ -6073,7 +6073,7 @@ def __init__(self) -> None:
@parse_arguments({"address": ""}, {"--allow-unaligned": True, "--number": 1})
@only_if_gdb_running
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not args.address:
err("Missing chunk address")
self.usage()
Expand All @@ -6083,7 +6083,7 @@ def do_invoke(self, _: List[str], **kwargs: Any) -> None:
current_chunk = GlibcChunk(addr, allow_unaligned=args.allow_unaligned)

if args.number > 1:
for _ in range(args.number):
for _i in range(args.number):
if current_chunk.size == 0:
break

Expand Down Expand Up @@ -6411,7 +6411,7 @@ def do_invoke(self, *_: Any, **kwargs: Any) -> None:
def fastbin_index(sz: int) -> int:
return (sz >> 4) - 2 if SIZE_SZ == 8 else (sz >> 3) - 2

args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not gef.heap.main_arena:
err("Heap not initialized")
return
Expand Down Expand Up @@ -6474,7 +6474,7 @@ def __init__(self) -> None:
@parse_arguments({"arena_address": ""}, {})
@only_if_gdb_running
def do_invoke(self, *_: Any, **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if gef.heap.main_arena is None:
err("Heap not initialized")
return
Expand All @@ -6500,7 +6500,7 @@ def __init__(self) -> None:
@parse_arguments({"arena_address": ""}, {})
@only_if_gdb_running
def do_invoke(self, *_: Any, **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not gef.heap.main_arena:
err("Heap not initialized")
return
Expand Down Expand Up @@ -6532,7 +6532,7 @@ def __init__(self) -> None:
@parse_arguments({"arena_address": ""}, {})
@only_if_gdb_running
def do_invoke(self, *_: Any, **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if gef.heap.main_arena is None:
err("Heap not initialized")
return
Expand Down Expand Up @@ -6565,7 +6565,7 @@ def hex_to_int(num):
return int(num, 16)
except ValueError:
return 0
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not args.symbol:
self.usage()
return
Expand Down Expand Up @@ -6602,7 +6602,7 @@ def do_invoke(self, _: List[str], **kwargs: Any) -> None:
string_color = gef.config["theme.dereference_string"]
regs = gef.arch.all_registers

args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if args.registers and args.registers[0]:
required_regs = set(args.registers)
valid_regs = [reg for reg in gef.arch.all_registers if reg in required_regs]
Expand Down Expand Up @@ -6806,7 +6806,7 @@ def __init__(self) -> None:

@parse_arguments({"pattern": ""}, {"--attach": True, "--smart-scan": True})
def do_invoke(self, _: List, **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
do_attach = args.attach
smart_scan = args.smart_scan
pattern = args.pattern
Expand Down Expand Up @@ -6869,7 +6869,7 @@ def __init__(self) -> None:

@parse_arguments({}, {"--filename": ""})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]

if is_qemu_system():
err("Unsupported")
Expand Down Expand Up @@ -7027,7 +7027,7 @@ def __init__(self) -> None:

@parse_arguments({"name": "", "address": "*$pc"}, {})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not args.name:
err("Missing name for breakpoint")
self.usage()
Expand Down Expand Up @@ -7865,7 +7865,7 @@ def do_invoke(self, _: List[str], **kwargs: Any) -> None:
err("Invalid command")
return

args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
target = args.address or self.__last_target
start_addr = parse_address(target)
read_from = align_address(start_addr)
Expand Down Expand Up @@ -7998,7 +7998,7 @@ def __init__(self) -> None:
@only_if_gdb_running
@parse_arguments({"location": "", "values": ["", ]}, {})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
if not self.format or self.format not in self.SUPPORTED_SIZES:
self.usage()
return
Expand Down Expand Up @@ -8225,7 +8225,7 @@ def pprint_dereferenced(addr: int, idx: int, base_offset: int = 0) -> str:
@only_if_gdb_running
@parse_arguments({"address": "$sp"}, {("-r", "--reference"): "", ("-l", "--length"): 10})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
nb = args.length

target = args.address
Expand Down Expand Up @@ -8686,7 +8686,7 @@ class PatternCreateCommand(GenericCommand):

@parse_arguments({"length": 0}, {("-n", "--n"): 0})
def do_invoke(self, _: List[str], **kwargs: Any) -> None:
args = kwargs["arguments"]
args : argparse.Namespace = kwargs["arguments"]
length = args.length or gef.config["pattern.length"]
n = args.n or gef.arch.ptrsize
info(f"Generating a pattern of {length:d} bytes (n={n:d})")
Expand Down Expand Up @@ -8717,6 +8717,7 @@ def do_invoke(self, _: List[str], **kwargs: Any) -> None:
if not args.pattern:
warn("No pattern provided")
return

max_length = args.max_length or gef.config["pattern.length"]
n = args.period or gef.arch.ptrsize
if n not in (2, 4, 8) or n > gef.arch.ptrsize:
Expand Down Expand Up @@ -10436,8 +10437,8 @@ def auxiliary_vector(self) -> Optional[Dict[str, int]]:
if not self._auxiliary_vector:
auxiliary_vector = {}
auxv_info = gdb.execute("info auxv", to_string=True)
if "failed" in auxv_info:
err(auxv_info)
if not auxv_info or "failed" in auxv_info:
err("Failed to query auxiliary variables")
return None
for line in auxv_info.splitlines():
line = line.split('"')[0].strip() # remove the ending string (if any)
Expand Down Expand Up @@ -10690,7 +10691,7 @@ def __setup_remote(self) -> bool:

def remote_objfile_event_handler(self, evt: "gdb.NewObjFileEvent") -> None:
dbg(f"[remote] in remote_objfile_handler({evt.new_objfile.filename if evt else 'None'}))")
if not evt:
if not evt or not evt.new_objfile.filename:
return
if not evt.new_objfile.filename.startswith("target:") and not evt.new_objfile.filename.startswith("/"):
warn(f"[remote] skipping '{evt.new_objfile.filename}'")
Expand Down