Move some duplicated mocking code to headers
What changed, and why it matters
This commit is a routine cleanup of the project's unit-test code. It removes duplicate mock implementations of a small helper function called `pic()` from 14 test files and places a single shared version in a mock header. The change only affects test code, not the actual Ledger Bitcoin app that runs on devices. The commit message says the cleanup was done to fix confusing code-coverage measurements. There is no indication this fixes a security vulnerability or changes how the app behaves.
No security action required. Treat as normal code-quality/test-maintenance refactor.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff refactors unit-test mocking code. Previously, many test C files defined their own unsigned int pic(unsigned int linked_address) { return linked_address; } stub and redefined the PIC macro. The commit moves that stub into unit-tests/mock_includes/os.h as a static inline __attribute__((always_inline)) function and adjusts the PIC macro there. One test file (test_script.c) and test_wallet.c keep their own PIC(x) (x) macro but drop the duplicate function definition. No firmware/runtime source files are modified, and no behavior of the shipped application changes.
Changed components
unit-tests/mock_includes/os.hunit-tests/test_check_merkle_tree_sorted.cunit-tests/test_extract_bip32_derivation.cunit-tests/test_get_merkle_leaf_element.cunit-tests/test_get_merkle_leaf_hash.cunit-tests/test_get_merkle_leaf_index.cunit-tests/test_get_merkle_preimage.cunit-tests/test_get_merkleized_map.cunit-tests/test_get_merkleized_map_value.cunit-tests/test_get_preimage.cunit-tests/test_script.cunit-tests/test_stream_merkle_leaf_element.cunit-tests/test_stream_merkleized_map_value.cunit-tests/test_stream_preimage.cunit-tests/test_wallet.cInspect captured patch +4 / −94
diff --git a/unit-tests/mock_includes/os.h b/unit-tests/mock_includes/os.h
index 26a0b87..fb8d79e 100644
--- a/unit-tests/mock_includes/os.h
+++ b/unit-tests/mock_includes/os.h
@@ -209,8 +209,10 @@ int setjmp(jmp_buf __jmpb);
// depending on the execution address. Can be used even if code is executing at
// the same place where it had been linked.
#ifndef PIC
-#define PIC(x) pic((unsigned int)x)
-unsigned int pic(unsigned int linked_address);
+#define PIC(x) pic((unsigned int) x)
+static inline __attribute__((always_inline)) unsigned int pic(unsigned int linked_address) {
+ return linked_address;
+}
#endif
#ifndef SYSCALL
diff --git a/unit-tests/test_check_merkle_tree_sorted.c b/unit-tests/test_check_merkle_tree_sorted.c
index 63d0adb..9b32227 100644
--- a/unit-tests/test_check_merkle_tree_sorted.c
+++ b/unit-tests/test_check_merkle_tree_sorted.c
@@ -18,13 +18,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_extract_bip32_derivation.c b/unit-tests/test_extract_bip32_derivation.c
index 112802e..9bc0fc6 100644
--- a/unit-tests/test_extract_bip32_derivation.c
+++ b/unit-tests/test_extract_bip32_derivation.c
@@ -18,13 +18,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "psbt_parse.h"
diff --git a/unit-tests/test_get_merkle_leaf_element.c b/unit-tests/test_get_merkle_leaf_element.c
index cfd7653..f645925 100644
--- a/unit-tests/test_get_merkle_leaf_element.c
+++ b/unit-tests/test_get_merkle_leaf_element.c
@@ -16,13 +16,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_get_merkle_leaf_hash.c b/unit-tests/test_get_merkle_leaf_hash.c
index bf3d545..0bed261 100644
--- a/unit-tests/test_get_merkle_leaf_hash.c
+++ b/unit-tests/test_get_merkle_leaf_hash.c
@@ -15,13 +15,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_get_merkle_leaf_index.c b/unit-tests/test_get_merkle_leaf_index.c
index ee6a766..9836aa2 100644
--- a/unit-tests/test_get_merkle_leaf_index.c
+++ b/unit-tests/test_get_merkle_leaf_index.c
@@ -16,13 +16,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_get_merkle_preimage.c b/unit-tests/test_get_merkle_preimage.c
index 574cf18..ed9111d 100644
--- a/unit-tests/test_get_merkle_preimage.c
+++ b/unit-tests/test_get_merkle_preimage.c
@@ -16,13 +16,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_get_merkleized_map.c b/unit-tests/test_get_merkleized_map.c
index 77938a5..f962549 100644
--- a/unit-tests/test_get_merkleized_map.c
+++ b/unit-tests/test_get_merkleized_map.c
@@ -21,13 +21,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_get_merkleized_map_value.c b/unit-tests/test_get_merkleized_map_value.c
index f9452e6..d837874 100644
--- a/unit-tests/test_get_merkleized_map_value.c
+++ b/unit-tests/test_get_merkleized_map_value.c
@@ -18,13 +18,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_get_preimage.c b/unit-tests/test_get_preimage.c
index b6c7906..26004c0 100644
--- a/unit-tests/test_get_preimage.c
+++ b/unit-tests/test_get_preimage.c
@@ -16,13 +16,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_script.c b/unit-tests/test_script.c
index 4c97198..a7b6b23 100644
--- a/unit-tests/test_script.c
+++ b/unit-tests/test_script.c
@@ -9,10 +9,6 @@
#include <cmocka.h>
// missing definitions to make it compile without the SDK
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-
#define PRINTF(...) printf
#define PIC(x) (x)
diff --git a/unit-tests/test_stream_merkle_leaf_element.c b/unit-tests/test_stream_merkle_leaf_element.c
index 7e55dd0..bd45859 100644
--- a/unit-tests/test_stream_merkle_leaf_element.c
+++ b/unit-tests/test_stream_merkle_leaf_element.c
@@ -16,13 +16,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_stream_merkleized_map_value.c b/unit-tests/test_stream_merkleized_map_value.c
index 18982be..ad5257c 100644
--- a/unit-tests/test_stream_merkleized_map_value.c
+++ b/unit-tests/test_stream_merkleized_map_value.c
@@ -16,13 +16,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_stream_preimage.c b/unit-tests/test_stream_preimage.c
index 45025b2..2699103 100644
--- a/unit-tests/test_stream_preimage.c
+++ b/unit-tests/test_stream_preimage.c
@@ -17,13 +17,6 @@
#include <cmocka.h>
-/* SDK mock stubs */
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-#undef PIC
-#define PIC(x) (x)
-
#include "mock_dispatcher.h"
#include "cx_hash_mock.h"
#include "sha-256.h"
diff --git a/unit-tests/test_wallet.c b/unit-tests/test_wallet.c
index 0063d32..e98f56b 100644
--- a/unit-tests/test_wallet.c
+++ b/unit-tests/test_wallet.c
@@ -11,10 +11,6 @@
#include "common/buffer_ext.h"
// missing definitions to make it compile without the SDK
-unsigned int pic(unsigned int linked_address) {
- return linked_address;
-}
-
#define PRINTF(...) printf
#define PIC(x) (x)
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.