]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:lib:messaging:handlers fix cast-align warning
authorGary Lockyer <gary@catalyst.net.nz>
Wed, 8 Apr 2026 22:33:39 +0000 (10:33 +1200)
committerGary Lockyer <gary@samba.org>
Fri, 29 May 2026 03:13:32 +0000 (03:13 +0000)
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 <gary@catalyst.net.nz>
Reviewed-by: Jennifer Sutton <jennifersutton@catalyst.net.nz>
source4/lib/messaging/messaging_handlers.c

index 57e3e1c8f1b5a40fdfd37a69eba3e55ff607c811..76aa32af87bc05319eb13922669c03369cdfc623 100644 (file)
 */
 
 #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);