Skip to content

Commit

Permalink
explicitly forcing args : argparse.Namespace as a result of `parse_…
Browse files Browse the repository at this point in the history
…arguments` (#856)
  • Loading branch information
hugsy committed Oct 2, 2022
1 parent 2b52a43 commit 1f49f8a
Showing 1 changed file with 27 additions and 26 deletions.
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 @@ -10437,8 +10438,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 @@ -10691,7 +10692,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

0 comments on commit 1f49f8a

Please sign in to comment.