Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

safety: only run rx hooks on whitelisted msgs #1903

Merged
merged 57 commits into from
Mar 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
2c070df
don't run rx hook on non-allowed messages
sshane Mar 3, 2025
c0bff74
better name
sshane Mar 3, 2025
eb3424c
fix toyota (bug w/ secoc)
sshane Mar 3, 2025
b6a9089
looks like honda is broken
sshane Mar 3, 2025
3382d4a
rivian is also bad! (missing EPAS_SystemStatus)
sshane Mar 3, 2025
b28ddda
misra so far
sshane Mar 3, 2025
fcbddec
nissan is fine
sshane Mar 3, 2025
f289e52
tesla is also borked
sshane Mar 3, 2025
d82214c
mazda's good
sshane Mar 3, 2025
425612b
subaru's fine
sshane Mar 3, 2025
0a9b5aa
gm broke
sshane Mar 3, 2025
ad18efc
ford's good
sshane Mar 3, 2025
ddc8290
chrysler's good
sshane Mar 3, 2025
2facb73
vw is good
sshane Mar 3, 2025
961d3cc
hyundai is broky, canfd is good
sshane Mar 3, 2025
1648ad9
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 7, 2025
7992dd0
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 7, 2025
c27ff5f
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 8, 2025
1f2ed53
Fix Rivian
sshane Mar 8, 2025
6016eff
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 11, 2025
0c6a89b
revert these
sshane Mar 11, 2025
aa21d5d
do relay malfunction check on all addresses
sshane Mar 11, 2025
a03788b
Found a Tesla bug
sshane Mar 11, 2025
51fed63
fix subaru pg
sshane Mar 11, 2025
accaeab
body
sshane Mar 11, 2025
bbf5457
rm
sshane Mar 11, 2025
cd711a3
Fix Honda
sshane Mar 11, 2025
942af4d
stash
sshane Mar 11, 2025
214064a
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 11, 2025
62d5f55
fix Hyundai
sshane Mar 11, 2025
ac94ff5
fix
sshane Mar 11, 2025
d09e708
Hyundai: buttons are used always (for interaction)
sshane Mar 11, 2025
d182243
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 11, 2025
d41d8c3
revert tesla
sshane Mar 11, 2025
2f973f6
body: we don't rx _torque_cmd_msg
sshane Mar 11, 2025
f83e217
Revert "body: we don't rx _torque_cmd_msg"
sshane Mar 11, 2025
8d7cdca
simpler
sshane Mar 11, 2025
c1ad98e
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 11, 2025
eaa762a
GM EV param for correct rxchecks
sshane Mar 11, 2025
1d4a816
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 12, 2025
a6d8a42
no need
sshane Mar 12, 2025
328d18a
might read better
sshane Mar 12, 2025
cc5a17a
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 12, 2025
ac472da
rm extras
sshane Mar 12, 2025
1f12d82
fix hyundai
sshane Mar 12, 2025
700703f
we weren't testing lfa (non-hda2), alt buttons, long
sshane Mar 12, 2025
5037164
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 12, 2025
32f71be
fix
sshane Mar 12, 2025
d8d3685
tested
sshane Mar 12, 2025
01440ce
rm
sshane Mar 12, 2025
f8e8b44
not needed
sshane Mar 12, 2025
1b431ef
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 12, 2025
dc71049
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 12, 2025
7864bfc
clean up
sshane Mar 12, 2025
dbdea15
that too
sshane Mar 12, 2025
957a07b
Merge remote-tracking branch 'upstream/master' into rx-hook-whitelist
sshane Mar 12, 2025
9442d46
.
sshane Mar 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions opendbc/safety/safety.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,19 +211,20 @@ bool safety_rx_hook(const CANPacket_t *to_push) {
bool controls_allowed_prev = controls_allowed;

bool valid = rx_msg_safety_check(to_push, &current_safety_config, current_hooks);
if (valid) {
bool whitelisted = get_addr_check_index(to_push, current_safety_config.rx_checks, current_safety_config.rx_checks_len) != -1;
if (valid && whitelisted) {
current_hooks->rx(to_push);
}

const int bus = GET_BUS(to_push);
const int addr = GET_ADDR(to_push);

// check all tx msgs for liveness on sending bus if specified.
// used to detect a relay malfunction or control messages from disabled ECUs like the radar
for (int i = 0; i < current_safety_config.tx_msgs_len; i++) {
const CanMsg *m = &current_safety_config.tx_msgs[i];
if (m->check_relay) {
generic_rx_checks((m->addr == addr) && (m->bus == bus));
}
// the relay malfunction hook runs on all incoming rx messages.
// check all tx msgs for liveness on sending bus if specified.
// used to detect a relay malfunction or control messages from disabled ECUs like the radar
const int bus = GET_BUS(to_push);
const int addr = GET_ADDR(to_push);
for (int i = 0; i < current_safety_config.tx_msgs_len; i++) {
const CanMsg *m = &current_safety_config.tx_msgs[i];
if (m->check_relay) {
generic_rx_checks((m->addr == addr) && (m->bus == bus));
}
}

Expand Down
3 changes: 3 additions & 0 deletions opendbc/safety/safety/safety_defaults.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

#include "safety_declarations.h"

// GCOV_EXCL_START
// Unreachable by design (doesn't define any rx msgs)
void default_rx_hook(const CANPacket_t *to_push) {
UNUSED(to_push);
}
// GCOV_EXCL_STOP

// *** no output safety mode ***

Expand Down
4 changes: 2 additions & 2 deletions opendbc/safety/tests/test_body.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ def test_rx_hook(self):
self.assertFalse(self.safety.get_controls_allowed())
self.assertFalse(self.safety.get_vehicle_moving())

# controls allowed when we get MOTORS_DATA message
# controls allowed and vehicle moving when we get MOTORS_DATA message
self.assertTrue(self._rx(self._torque_cmd_msg(0, 0)))
self.assertTrue(self.safety.get_vehicle_moving()) # always moving
self.assertFalse(self.safety.get_vehicle_moving())
self.assertFalse(self.safety.get_controls_allowed())

self.assertTrue(self._rx(self._motors_data_msg(0, 0)))
Expand Down