Skip to content

Commit c769006

Browse files
committed
use try_read instead of ql.mem.read for proper error message
1 parent be2f449 commit c769006

File tree

1 file changed

+17
-22
lines changed

1 file changed

+17
-22
lines changed

qiling/debugger/qdb/frontend.py

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def unpack(bs, sz):
8888
mem_read = []
8989
for offset in range(ct):
9090
# append data if read successfully, otherwise return error message
91-
if (data := _try_read(ql, addr+(offset*sz), sz))[0]:
91+
if (data := _try_read(ql, addr+(offset*sz), sz))[0] is not None:
9292
mem_read.append(data[0])
9393

9494
else:
@@ -231,27 +231,22 @@ def context_reg(ql: Qiling, saved_states: Optional[Mapping[str, int]] = None, /,
231231
val = ql.mem.read(addr, ql.pointersize)
232232
print(f"$sp+0x{idx*ql.pointersize:02x}│ [0x{addr:08x}] —▸ 0x{ql.unpack(val):08x}", end="")
233233

234-
try: # try to deference wether its a pointer
235-
buf = ql.mem.read(addr, ql.pointersize)
236-
except:
237-
buf = None
238-
239-
if (addr := ql.unpack(buf)):
240-
try: # try to deference again
241-
buf = ql.mem.read(addr, ql.pointersize)
242-
except:
243-
buf = None
244-
245-
if buf:
246-
try:
247-
s = ql.mem.string(addr)
248-
except:
249-
s = None
250-
251-
if s and s.isprintable():
252-
print(f" ◂— {ql.mem.string(addr)}", end="")
253-
else:
254-
print(f" ◂— 0x{ql.unpack(buf):08x}", end="")
234+
# try to dereference wether it's a pointer
235+
if (buf := _try_read(ql, addr, ql.pointersize))[0] is not None:
236+
237+
if (addr := ql.unpack(buf[0])):
238+
239+
# try to dereference again
240+
if (buf := _try_read(ql, addr, ql.pointersize))[0] is not None:
241+
try:
242+
s = ql.mem.string(addr)
243+
except:
244+
s = None
245+
246+
if s and s.isprintable():
247+
print(f" ◂— {ql.mem.string(addr)}", end="")
248+
else:
249+
print(f" ◂— 0x{ql.unpack(buf[0]):08x}", end="")
255250
print()
256251

257252

0 commit comments

Comments
 (0)