Skip to content

Commit 625f438

Browse files
committed
Fix invalid escape sequences in str/bytes
This commit addresses the python3.6 deprecation of invalid escape sequences in str/bytes by using raw strings, which in turn addresses DeprecationWarning and SyntaxWarning in later versions This change will also avoid a future SyntaxError as per the python3.12 release highlights Following is a complete dump of all the affected lines: $ pycodestyle --select W605 /usr/share/gdb-peda/peda.py /usr/share/gdb-peda/peda.py:151:29: W605 invalid escape sequence '\[' /usr/share/gdb-peda/peda.py:151:35: W605 invalid escape sequence '\]' /usr/share/gdb-peda/peda.py:373:41: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:550:27: W605 invalid escape sequence '\d' /usr/share/gdb-peda/peda.py:550:31: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:550:48: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:550:61: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:550:69: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:550:81: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:554:31: W605 invalid escape sequence '\d' /usr/share/gdb-peda/peda.py:554:35: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:554:47: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:554:60: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:554:68: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:567:33: W605 invalid escape sequence '\d' /usr/share/gdb-peda/peda.py:596:29: W605 invalid escape sequence '\d' /usr/share/gdb-peda/peda.py:916:33: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:916:49: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:916:59: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:918:38: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:918:46: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:918:56: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:937:36: W605 invalid escape sequence '\[' /usr/share/gdb-peda/peda.py:937:45: W605 invalid escape sequence '\]' /usr/share/gdb-peda/peda.py:969:26: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:969:36: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1116:33: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1223:29: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1223:37: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1226:33: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1226:37: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1226:48: W605 invalid escape sequence '\w' /usr/share/gdb-peda/peda.py:1235:37: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1235:45: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1235:59: W605 invalid escape sequence '\[' /usr/share/gdb-peda/peda.py:1235:65: W605 invalid escape sequence '\]' /usr/share/gdb-peda/peda.py:1430:43: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1430:60: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1430:69: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:1430:75: W605 invalid escape sequence '\[' /usr/share/gdb-peda/peda.py:1430:79: W605 invalid escape sequence '\]' /usr/share/gdb-peda/peda.py:1430:81: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2096:56: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2114:48: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2214:41: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2242:25: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2242:62: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2242:72: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2316:40: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2416:27: W605 invalid escape sequence '\[' /usr/share/gdb-peda/peda.py:2416:31: W605 invalid escape sequence '\]' /usr/share/gdb-peda/peda.py:2416:35: W605 invalid escape sequence '\.' /usr/share/gdb-peda/peda.py:2474:35: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:2474:64: W605 invalid escape sequence '\.' /usr/share/gdb-peda/peda.py:2681:62: W605 invalid escape sequence '\ ' /usr/share/gdb-peda/peda.py:2681:81: W605 invalid escape sequence '\?' /usr/share/gdb-peda/peda.py:2832:65: W605 invalid escape sequence '\ ' /usr/share/gdb-peda/peda.py:3414:26: W605 invalid escape sequence '\[' /usr/share/gdb-peda/peda.py:3414:32: W605 invalid escape sequence '\]' /usr/share/gdb-peda/peda.py:3519:38: W605 invalid escape sequence '\[' /usr/share/gdb-peda/peda.py:3519:44: W605 invalid escape sequence '\]' /usr/share/gdb-peda/peda.py:3529:32: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:3529:38: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:3531:30: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:3533:30: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:4125:29: W605 invalid escape sequence '\s' /usr/share/gdb-peda/peda.py:4125:37: W605 invalid escape sequence '\s' Signed-off-by: X0RW3LL <X0RW3LL@gmail.com>
1 parent d43a0ad commit 625f438

1 file changed

Lines changed: 30 additions & 30 deletions

File tree

peda.py

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def parse_and_eval(self, exp):
148148
if "$"+r not in exp and "e"+r not in exp and "r"+r not in exp:
149149
exp = exp.replace(r, "$%s" % r)
150150

151-
p = re.compile("(.*)\[(.*)\]") # DWORD PTR [esi+eax*1]
151+
p = re.compile(r"(.*)\[(.*)\]") # DWORD PTR [esi+eax*1]
152152
matches = p.search(exp)
153153
if not matches:
154154
p = re.compile("(.*).s:(0x.*)") # DWORD PTR ds:0xdeadbeef
@@ -370,7 +370,7 @@ def getfile(self):
370370
result = None
371371
out = self.execute_redirect('info files')
372372
if out and '"' in out:
373-
p = re.compile(".*exec file:\s*`(.*)'")
373+
p = re.compile(r".*exec file:\s*`(.*)'")
374374
m = p.search(out)
375375
if m:
376376
result = m.group(1)
@@ -547,11 +547,11 @@ def get_breakpoint(self, num):
547547

548548
lines = out.splitlines()[1:]
549549
# breakpoint regex
550-
p = re.compile("^(\d*)\s*(.*breakpoint)\s*(keep|del)\s*(y|n)\s*(0x[^ ]*)\s*(.*)")
550+
p = re.compile(r"^(\d*)\s*(.*breakpoint)\s*(keep|del)\s*(y|n)\s*(0x[^ ]*)\s*(.*)")
551551
m = p.match(lines[0])
552552
if not m:
553553
# catchpoint/watchpoint regex
554-
p = re.compile("^(\d*)\s*(.*point)\s*(keep|del)\s*(y|n)\s*(.*)")
554+
p = re.compile(r"^(\d*)\s*(.*point)\s*(keep|del)\s*(y|n)\s*(.*)")
555555
m = p.match(lines[0])
556556
if not m:
557557
return None
@@ -564,7 +564,7 @@ def get_breakpoint(self, num):
564564
disp = True if disp == "keep" else False
565565
enb = True if enb == "y" else False
566566
addr = to_int(addr)
567-
m = re.match("in.*at(.*:\d*)", what)
567+
m = re.match(r"in.*at(.*:\d*)", what)
568568
if m:
569569
what = m.group(1)
570570
else:
@@ -593,7 +593,7 @@ def get_breakpoints(self):
593593

594594
bplist = []
595595
for line in out.splitlines():
596-
m = re.match("^(\d*).*", line)
596+
m = re.match(r"^(\d*).*", line)
597597
if m and to_int(m.group(1)):
598598
bplist += [to_int(m.group(1))]
599599

@@ -913,9 +913,9 @@ def xrefs(self, search="", filename=None):
913913
out = self.execute_redirect("x/i 0x%x" % addr)
914914
if out:
915915
line = out
916-
p = re.compile("\s*(0x[^ ]*).*?:\s*([^ ]*)\s*(.*)")
916+
p = re.compile(r"\s*(0x[^ ]*).*?:\s*([^ ]*)\s*(.*)")
917917
else:
918-
p = re.compile("(.*?)\s*<.*?>\s*([^ ]*)\s*(.*)")
918+
p = re.compile(r"(.*?)\s*<.*?>\s*([^ ]*)\s*(.*)")
919919

920920
m = p.search(line)
921921
if m:
@@ -934,7 +934,7 @@ def _get_function_args_32(self, code, argc=None):
934934
"""
935935
if not argc:
936936
argc = 0
937-
p = re.compile(".*mov.*\[esp(.*)\],")
937+
p = re.compile(r".*mov.*\[esp(.*)\],")
938938
matches = p.findall(code)
939939
if matches:
940940
l = len(matches)
@@ -966,7 +966,7 @@ def _get_function_args_64(self, code, argc=None):
966966

967967
# just retrieve max 6 args
968968
arg_order = ["rdi", "rsi", "rdx", "rcx", "r8", "r9"]
969-
p = re.compile(":\s*([^ ]*)\s*(.*),")
969+
p = re.compile(r":\s*([^ ]*)\s*(.*),")
970970
matches = p.findall(code)
971971
regs = [r for (_, r) in matches]
972972
p = re.compile(("di|si|dx|cx|r8|r9"))
@@ -1113,7 +1113,7 @@ def stepuntil(self, inst, mapname=None, depth=None):
11131113
break
11141114

11151115
#p = re.compile(".*?:\s*([^ ]*)")
1116-
p = re.compile(".*?:\s*(.*)")
1116+
p = re.compile(r".*?:\s*(.*)")
11171117
code = p.match(current_instruction).group(1)
11181118
found = 0
11191119
for i in inst.replace(",", " ").split():
@@ -1220,10 +1220,10 @@ def eval_target(self, inst):
12201220
inst = inst.strip()
12211221
opcode = inst.split(":\t")[-1].split()[0]
12221222
# this regex includes x86_64 RIP relateive address reference
1223-
p = re.compile(".*?:\s*[^ ]*\s*(.* PTR ).*(0x[^ ]*)")
1223+
p = re.compile(r".*?:\s*[^ ]*\s*(.* PTR ).*(0x[^ ]*)")
12241224
m = p.search(inst)
12251225
if not m:
1226-
p = re.compile(".*?:\s.*\s(0x[^ ]*|\w+)")
1226+
p = re.compile(r".*?:\s.*\s(0x[^ ]*|\w+)")
12271227
m = p.search(inst)
12281228
if m:
12291229
target = m.group(1)
@@ -1232,7 +1232,7 @@ def eval_target(self, inst):
12321232
target = None
12331233
else:
12341234
if "]" in m.group(2): # e.g DWORD PTR [ebx+0xc]
1235-
p = re.compile(".*?:\s*[^ ]*\s*(.* PTR ).*\[(.*)\]")
1235+
p = re.compile(r".*?:\s*[^ ]*\s*(.* PTR ).*\[(.*)\]")
12361236
m = p.search(inst)
12371237
target = self.parse_and_eval("%s[%s]" % (m.group(1), m.group(2).strip()))
12381238

@@ -1427,7 +1427,7 @@ def _get_offline_maps():
14271427
def _get_allmaps_osx(pid, remote=False):
14281428
maps = []
14291429
#_DATA 00007fff77975000-00007fff77976000 [ 4K] rw-/rw- SM=COW /usr/lib/system/libremovefile.dylib
1430-
pattern = re.compile("([^\n]*)\s* ([0-9a-f][^-\s]*)-([^\s]*) \[.*\]\s([^/]*).* (.*)")
1430+
pattern = re.compile(r"([^\n]*)\s* ([0-9a-f][^-\s]*)-([^\s]*) \[.*\]\s([^/]*).* (.*)")
14311431

14321432
if remote: # remote target, not yet supported
14331433
return maps
@@ -2093,7 +2093,7 @@ def examine_data(value, bits=32):
20932093
if value >= start and value < end:
20942094
if type == "code":
20952095
out = self.get_disasm(value)
2096-
p = re.compile(".*?0x[^ ]*?\s(.*)")
2096+
p = re.compile(r".*?0x[^ ]*?\s(.*)")
20972097
m = p.search(out)
20982098
result = (to_hex(value), "code", m.group(1))
20992099
else: # rodata address
@@ -2111,7 +2111,7 @@ def examine_data(value, bits=32):
21112111
out = examine_data(value, bits)
21122112
result = (to_hex(value), "rodata", out.split(":", 1)[1].strip())
21132113
else:
2114-
p = re.compile(".*?0x[^ ]*?\s(.*)")
2114+
p = re.compile(r".*?0x[^ ]*?\s(.*)")
21152115
m = p.search(out)
21162116
result = (to_hex(value), "code", m.group(1))
21172117

@@ -2211,7 +2211,7 @@ def elfentry(self):
22112211
- entry address (Int)
22122212
"""
22132213
out = self.execute_redirect("info files")
2214-
p = re.compile("Entry point: ([^\s]*)")
2214+
p = re.compile(r"Entry point: ([^\s]*)")
22152215
if out:
22162216
m = p.search(out)
22172217
if m:
@@ -2239,7 +2239,7 @@ def elfheader(self, name=None):
22392239
if not out:
22402240
return {}
22412241

2242-
p = re.compile("\s*(0x[^-]*)->(0x[^ ]*) at (0x[^:]*):\s*([^ ]*)\s*(.*)")
2242+
p = re.compile(r"\s*(0x[^-]*)->(0x[^ ]*) at (0x[^:]*):\s*([^ ]*)\s*(.*)")
22432243
matches = p.findall(out)
22442244

22452245
for (start, end, offset, hname, attr) in matches:
@@ -2313,7 +2313,7 @@ def elfsymbols(self, pattern=None):
23132313
symname += "@plt"
23142314
out = self.execute_redirect("info functions %s" % symname)
23152315
if not out: continue
2316-
m = re.findall(".*(0x[^ ]*)\s*%s" % re.escape(symname), out)
2316+
m = re.findall(r".*(0x[^ ]*)\s*%s" % re.escape(symname), out)
23172317
for addr in m:
23182318
addr = to_int(addr)
23192319
if self.is_address(addr, binmap):
@@ -2413,7 +2413,7 @@ def readelf_header(self, filename, name=None):
24132413
out = execute_external_command("%s -W -S %s" % (config.READELF, filename))
24142414
if not out:
24152415
return {}
2416-
p = re.compile(".*\[.*\] (\.[^ ]*) [^0-9]* ([^ ]*) [^ ]* ([^ ]*)(.*)")
2416+
p = re.compile(r".*\[.*\] (\.[^ ]*) [^0-9]* ([^ ]*) [^ ]* ([^ ]*)(.*)")
24172417
matches = p.findall(out)
24182418
if not matches:
24192419
return result
@@ -2471,7 +2471,7 @@ def _elfheader_solib_all():
24712471
if not out:
24722472
return None
24732473

2474-
p = re.compile("[^\n]*\s*(0x[^ ]*) - (0x[^ ]*) is (\.[^ ]*) in (.*)")
2474+
p = re.compile(r"[^\n]*\s*(0x[^ ]*) - (0x[^ ]*) is (\.[^ ]*) in (.*)")
24752475
soheaders = p.findall(out)
24762476

24772477
result = []
@@ -2678,7 +2678,7 @@ def decode_hex_escape(str_):
26782678
blen = gadget[-1][0] - gadget[0][0] + 1
26792679
bytes = v[:2*blen]
26802680
asmcode_rs = "; ".join([c for _, c in gadget])
2681-
if re.search(re.escape(asmcode).replace("\ ",".*").replace("\?",".*"), asmcode_rs)\
2681+
if re.search(re.escape(asmcode).replace(r"\ ",".*").replace(r"\?",".*"), asmcode_rs)\
26822682
and a not in result:
26832683
result[a] = (bytes, asmcode_rs)
26842684
result = list(result.items())
@@ -2829,7 +2829,7 @@ def search_jmpcall(self, start, end, regname=None):
28292829
if regname is None:
28302830
regname = ""
28312831
regname = regname.lower()
2832-
pattern = re.compile(b'|'.join(JMPCALL).replace(b' ', b'\ '))
2832+
pattern = re.compile(b'|'.join(JMPCALL).replace(b' ', br'\ '))
28332833
mem = self.dumpmem(start, end)
28342834
found = pattern.finditer(mem)
28352835
(arch, bits) = self.getarch()
@@ -3411,7 +3411,7 @@ def xprint(self, *arg):
34113411
"""
34123412
text = ""
34133413
exp = " ".join(list(arg))
3414-
m = re.search(".*\[(.*)\]|.*?s:(0x[^ ]*)", exp)
3414+
m = re.search(r".*\[(.*)\]|.*?s:(0x[^ ]*)", exp)
34153415
if m:
34163416
addr = peda.parse_and_eval(m.group(1))
34173417
if to_int(addr):
@@ -3516,7 +3516,7 @@ def procinfo(self, *arg):
35163516
fdlist = os.listdir("/proc/%d/fd" % pid)
35173517
for fd in fdlist:
35183518
rpath = os.readlink("/proc/%d/fd/%s" % (pid, fd))
3519-
sock = re.search("socket:\[(.*)\]", rpath)
3519+
sock = re.search(r"socket:\[(.*)\]", rpath)
35203520
if sock:
35213521
spath = execute_external_command("netstat -aen | grep %s" % sock.group(1))
35223522
if spath:
@@ -3526,11 +3526,11 @@ def procinfo(self, *arg):
35263526
# uid/gid, pid, ppid
35273527
info["pid"] = pid
35283528
status = open("/proc/%d/status" % pid).read()
3529-
ppid = re.search("PPid:\s*([^\s]*)", status).group(1)
3529+
ppid = re.search(r"PPid:\s*([^\s]*)", status).group(1)
35303530
info["ppid"] = to_int(ppid) if ppid else -1
3531-
uid = re.search("Uid:\s*([^\n]*)", status).group(1)
3531+
uid = re.search(r"Uid:\s*([^\n]*)", status).group(1)
35323532
info["uid"] = [to_int(id) for id in uid.split()]
3533-
gid = re.search("Gid:\s*([^\n]*)", status).group(1)
3533+
gid = re.search(r"Gid:\s*([^\n]*)", status).group(1)
35343534
info["gid"] = [to_int(id) for id in gid.split()]
35353535

35363536
for opt in options:
@@ -4122,7 +4122,7 @@ def traceinst(self, *arg):
41224122
prev_depth = peda.backtrace_depth(peda.getreg("sp"))
41234123
logfd = open(logname, "w")
41244124

4125-
p = re.compile(".*?:\s*[^ ]*\s*([^,]*),(.*)")
4125+
p = re.compile(r".*?:\s*[^ ]*\s*([^,]*),(.*)")
41264126
while count:
41274127
result = peda.stepuntil(",".join(instlist), mapname, prev_depth)
41284128
if result is None:

0 commit comments

Comments
 (0)