From: Gary Lockyer Date: Wed, 8 Apr 2026 22:33:39 +0000 (+1200) Subject: s4:lib:messaging:handlers fix cast-align warning X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=e6f275ef42e55e52f0ec985ec09813166b22c550;p=thirdparty%2Fsamba.git s4:lib:messaging:handlers fix cast-align warning Have added asserts to check the alignment, as do_inject_build and do_sleep are only enabled in developer and selftest builds. The pointers sig_p and seconds_p where added for code readability, you can dereference the result of discard_align_p directly i.e. int sig = *discard_align_p(int, data->data); but that's not immediately obvious Signed-off-by: Gary Lockyer Reviewed-by: Jennifer Sutton --- diff --git a/source4/lib/messaging/messaging_handlers.c b/source4/lib/messaging/messaging_handlers.c index 57e3e1c8f1b..76aa32af87b 100644 --- a/source4/lib/messaging/messaging_handlers.c +++ b/source4/lib/messaging/messaging_handlers.c @@ -23,9 +23,11 @@ */ #include "includes.h" +#include "lib/util/alignment.h" #include "lib/util/server_id.h" #include "messaging/messaging.h" #include "messaging/messaging_internal.h" +#include "replace.h" #if defined(DEVELOPER) || defined(ENABLE_SELFTEST) @@ -41,6 +43,7 @@ static void do_inject_fault(struct imessaging_context *msg, DATA_BLOB *data) { int sig; + int *sig_p = NULL; struct server_id_buf tmp; if (num_fds != 0) { @@ -54,7 +57,9 @@ static void do_inject_fault(struct imessaging_context *msg, return; } - sig = *(int *)data->data; + SMB_ASSERT(check_alignment(data->data, int)); + sig_p = discard_align_p(int, data->data); + sig = *sig_p; if (sig == -1) { DBG_ERR("Process %s requested an iternal failure, " "calling exit(1)\n", @@ -88,6 +93,7 @@ static void do_sleep(struct imessaging_context *msg, DATA_BLOB *data) { unsigned int seconds; + unsigned int *seconds_p = NULL; struct server_id_buf tmp; if (num_fds != 0) { @@ -101,7 +107,9 @@ static void do_sleep(struct imessaging_context *msg, return; } - seconds = *(unsigned int *)data->data; + SMB_ASSERT(check_alignment(data->data, unsigned int)); + seconds_p = discard_align_p(unsigned int, data->data); + seconds = *seconds_p; DBG_ERR("Process %s requested a sleep of %u seconds\n", server_id_str_buf(src, &tmp), seconds);