Skip to content
Snippets Groups Projects
Commit fc88cd0b authored by Guillaume Valadon's avatar Guillaume Valadon
Browse files

Merged in martingalloar/scapy/enumkeys (pull request #76)

Added EnumFields that takes valid values when fuzzed
parents 3fedb287 d99bb186
No related branches found
No related tags found
No related merge requests found
......@@ -827,6 +827,24 @@ class BitMultiEnumField(BitField,MultiEnumField):
return MultiEnumField.i2repr(self, pkt, x)
class ByteEnumKeysField(ByteEnumField):
"""ByteEnumField that picks valid values when fuzzed. """
def randval(self):
return RandEnumKeys(self.i2s)
class ShortEnumKeysField(ShortEnumField):
"""ShortEnumField that picks valid values when fuzzed. """
def randval(self):
return RandEnumKeys(self.i2s)
class IntEnumKeysField(IntEnumField):
"""IntEnumField that picks valid values when fuzzed. """
def randval(self):
return RandEnumKeys(self.i2s)
# Little endian long field
class LELongField(Field):
def __init__(self, name, default):
......
......@@ -188,6 +188,17 @@ class RandEnumSLong(RandEnum):
def __init__(self):
RandEnum.__init__(self, -2L**63, 2L**63-1)
class RandEnumKeys(RandEnum):
"""Picks a random value from dict keys list. """
def __init__(self, enum):
self.enum = []
for key in list(enum.keys()):
self.enum.append(key)
self.seq = RandomEnumeration(0, len(list(enum.keys())) - 1)
def _fix(self):
return self.enum[self.seq.next()]
class RandChoice(RandField):
def __init__(self, *args):
if not args:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment