MAC spoofing failure doesn't result in panic mode (module removal)
_Originally created by @anonym on [#8571 (Redmine)](https://public-redmine-archive.tails.boum.org/code/issues/8571)_ If MAC spoofing fails, we have specified that we’re supposed to enter into a panic mode were we do our best to prevent the device in question to talk to the network (and hence leak the real MAC address) by removing the module etc. However, if `macchanger` returns an error we will actually not do this. See this extract from `config/chroot_local-includes/usr/local/sbin/tails-spoof-mac`: spoof_mac() { local msg if ! msg=$(macchanger -e "${1}" 2>&1); then log "macchanger failed for NIC ${1}, returned ${?} and said: ${msg}" exit 1 fi } The problem in the above is `exit 1`, which prevents the panic mode code from ever running. What was actually intended was probably `return 1`, which indeed will fix this issue. However, let’s first look at the context in which `spoof_mac()` is called: for i in 1 2 3; do spoof_mac "${NIC}" || : NEW_MAC="$(get_current_mac_of_nic "${NIC}")" if [ "${OLD_MAC}" != "${NEW_MAC}" ]; then break fi done So, we ignore any failure status returned from `spoof_mac()`. We actually probably want to immediately enter the panic mode if `macchanger` fails, for added fail-safeness. Feature Branch: bugfix/8571-fix-mac-spoof-panic-mode ### Related issues - **Related to** tails/tails#8685 - **Related to** tails/tails#9531
issue