From aa28f5bf5bd92e69c0e89a1a36c7c95f28b7057c Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Fri, 10 Jul 2026 17:09:58 +0200 Subject: irmd: Avoid in-place byteswap in OAP header gcc 12 -fanalyzer misclassifies kex_len = hton16(kex_len) followed by memcpy(&kex_len) as a read of an uninitialized value. Write the swapped value through the scratch variable like every other field in write_oap_fixed(). Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/irmd/oap/hdr.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/irmd/oap/hdr.c b/src/irmd/oap/hdr.c index 6f355133..0cff345c 100644 --- a/src/irmd/oap/hdr.c +++ b/src/irmd/oap/hdr.c @@ -292,9 +292,9 @@ static void write_oap_fixed(uint8_t * buf, kex_len |= OAP_KEX_ROLE_BIT; } - kex_len = hton16(kex_len); - memcpy(buf + offset, &kex_len, sizeof(kex_len)); - offset += sizeof(kex_len); + v = hton16(kex_len); + memcpy(buf + offset, &v, sizeof(v)); + offset += sizeof(v); v = hton16((uint16_t) data_len); memcpy(buf + offset, &v, sizeof(v)); -- cgit v1.2.3