Files
d2d537f2bb [NFC]: drop the unreachable EMV render code that called an undefined function (#1085)
* NFC: drop the unreachable EMV render island

nfc_render_emv_data() called nfc_render_emv_name(), which is declared in
emv_render.h and defined nowhere in the tree. It only escaped being a
link error because nfc_render_emv_data() has no callers itself, so
--gc-sections dropped the whole island before the linker had to resolve
it. Wiring it into any render path would have given nfc_emv.fal an
unresolved import, and the import check does not run for plugins, so it
would have shipped as a plugin that silently never loads - which is
exactly how the EMV plugin was broken until #1073.

The functionality is not lost: plugins/supported_cards/emv.c already
renders the application label or name, the PAN with the same F-padding
trim, and the cardholder name, and that is the path that actually runs.

Fixes #1084

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* NFC: drop the unused iso14443_4a render include from emv_render

emv_render.c includes ../iso14443_4a/iso14443_4a_render.h, which
declares only nfc_render_iso14443_4a_info/_brief/_extra - none of which
this file calls. NfcProtocolFormatType, the one type it might have been
there for, arrives via emv_render.h instead.

Pre-existing and unrelated to the undefined function above; folded in
because it is the same file and the same kind of leftover.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* NFC: remove declarations of things that are defined nowhere

Same class as the EMV render fix, found by sweeping every header under
applications/main/nfc and lib/nfc for prototypes with no definition.

nfc_make_app_folder is the dangerous one: a singular typo of
nfc_make_app_folders, sitting in the extern "C" block of nfc_app_i.h,
which every protocol plugin includes. It is one character away from a
real function and is not in the app API table, so a plugin calling it
would compile clean, link clean, and ship as a .fal that never loads.
The real function has one caller in its own file, so it is now static
rather than an undeclared global.

nfc_task is a relic - the entry point has been nfc_app() for a long time.

auth1/2/3_backdoor_key were superseded by mf_classic_backdoor_keys[] and
have been referenced by nothing since. Those three are firmware core, so
a stray reference would be a hard link error rather than a silent plugin
failure - listed here for completeness, not danger.

No functional change: none of the five had a caller, and API version
stays at 88.4.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 21:59:39 +03:00
..
2025-12-16 17:40:28 +03:00
2023-10-24 12:08:09 +09:00
2025-12-11 00:24:50 +03:00