-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Description
There's a mistake in the autosorting logic inside PayloadGenerator, as a consequence payload generation will often fail, raising a ValueError: Unknown error. Missing bytes on line 166 or an IndexError: list index out of range on line 180 of core.py.
A proof of concept crash:
from libformatstr import *
f = FormatStr()
f[0xdddddd05] = 0xcccccccc
payload = f.payload(6)
This is as a result of the if statement on line 145 of core.py being the wrong way round. At the moment the default value of autosort is True, and the if statement is:
if autosort:
self.addrs = list(mem.keys()) # addresses of each byte to set
else:
self.addrs = list(sorted(mem.keys()))
Which means the keys aren't sorted by default, causing various problems.
To rectify this the lines can simply be switched around like so:
if autosort:
self.addrs = list(sorted(mem.keys())) # addresses of each byte to set
else:
self.addrs = list(mem.keys())
This only appears to be a problem in this git repository. The versions in pip don't have the autosort property so keys are always sorted and this problem doesn't exist.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels