From 69a6d76b87398a2936de5214c9b718eee186eebf Mon Sep 17 00:00:00 2001 From: Scott Powell Date: Wed, 19 Mar 2025 13:54:43 +1100 Subject: [PATCH] * experimental workaround for sig verify() bug --- src/Mesh.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Mesh.cpp b/src/Mesh.cpp index 0a0fd769..e309685e 100644 --- a/src/Mesh.cpp +++ b/src/Mesh.cpp @@ -228,13 +228,16 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { // check that signature is valid bool is_ok; { - uint8_t message[PUB_KEY_SIZE + 4 + MAX_ADVERT_DATA_SIZE]; + static uint8_t message[PUB_KEY_SIZE + 4 + MAX_ADVERT_DATA_SIZE]; int msg_len = 0; memcpy(&message[msg_len], id.pub_key, PUB_KEY_SIZE); msg_len += PUB_KEY_SIZE; memcpy(&message[msg_len], ×tamp, 4); msg_len += 4; memcpy(&message[msg_len], app_data, app_data_len); msg_len += app_data_len; - is_ok = id.verify(signature, message, msg_len); + static uint8_t sig_copy[SIGNATURE_SIZE]; + memcpy(sig_copy, signature, SIGNATURE_SIZE); + + is_ok = id.verify(sig_copy, message, msg_len); } if (is_ok) { MESH_DEBUG_PRINTLN("%s Mesh::onRecvPacket(): valid advertisement received!", getLogDateTime());