From 54c55995f3bae37216deff8f7868f7be963a8d8c Mon Sep 17 00:00:00 2001 From: Amit Geynis Date: Mon, 10 Jul 2023 09:55:21 +0300 Subject: [PATCH] fix SOMEIP answers function, in case there is SD above --- scapy/contrib/automotive/someip.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scapy/contrib/automotive/someip.py b/scapy/contrib/automotive/someip.py index 1bb491644bc..9e18349af17 100644 --- a/scapy/contrib/automotive/someip.py +++ b/scapy/contrib/automotive/someip.py @@ -125,11 +125,21 @@ def answers(self, other): if isinstance(other, type(self)): if self.msg_type in [SOMEIP.TYPE_REQUEST_NO_RET, SOMEIP.TYPE_REQUEST_NORET_ACK, - SOMEIP.TYPE_NOTIFICATION, SOMEIP.TYPE_TP_REQUEST_NO_RET, SOMEIP.TYPE_TP_NOTIFICATION]: return 0 + + # if Notification but not SD + if (self.msg_type == SOMEIP.TYPE_NOTIFICATION and (self.srv_id != SD.SOMEIP_MSGID_SRVID + or self.sub_id != SD.SOMEIP_MSGID_SUBID + or self.event_id != SD.SOMEIP_MSGID_EVENTID + or self.proto_ver != SD.SOMEIP_PROTO_VER + or self.iface_ver != SD.SOMEIP_IFACE_VER + or self.retcode != SD.SOMEIP_RETCODE)): + return 0 + return self.payload.answers(other.payload) + return 0 @staticmethod