diff --git a/scapy/layers/ntp.py b/scapy/layers/ntp.py index f8dbe16b4..5941ad4ce 100644 --- a/scapy/layers/ntp.py +++ b/scapy/layers/ntp.py @@ -214,7 +214,7 @@ class NTP(Packet): if cls == "NTP": if isinstance(self, NTP): return True - elif issubclass(cls, NTP): + elif not isinstance(cls, str) and issubclass(cls, NTP): if isinstance(self, cls): return True return super(NTP, self).haslayer(cls) diff --git a/test/regression.uts b/test/regression.uts index 66e62ec6f..c0b934161 100644 --- a/test/regression.uts +++ b/test/regression.uts @@ -7053,7 +7053,6 @@ assert(not NTPControl in p) assert(NTPPrivate in p) assert(NTP in p) - = NTP - Layers (2) p = NTPHeader() assert(type(p[NTP]) == NTPHeader) @@ -7062,6 +7061,17 @@ assert(type(p[NTP]) == NTPControl) p = NTPPrivate() assert(type(p[NTP]) == NTPPrivate) += NTP - sessions (1) +p = IP()/TCP()/NTP() +l = PacketList(p) +s = l.sessions() # Crashed on commit: e42ecdc54556c4852ca06b1a6da6c1ccbf3f522e +assert len(s) == 1 + += NTP - sessions (2) +p = IP()/UDP()/NTP() +l = PacketList(p) +s = l.sessions() # Crashed on commit: e42ecdc54556c4852ca06b1a6da6c1ccbf3f522e +assert len(s) == 1 ############ ############