fix alignment bug hitting Solaris with "reset in zero vc" activated
authorBjörn Jacke <bj@sernet.de>
Mon, 21 Apr 2008 10:44:13 +0000 (12:44 +0200)
committerVolker Lendecke <vl@samba.org>
Mon, 21 Apr 2008 13:42:28 +0000 (15:42 +0200)
source/smbd/sesssetup.c

index 378d8aa20c6b09d3b2cf909e9b4ad5209b8f1552..0257cfadc0a7647f2d35f955473ff9bb10d683fa 100644 (file)
@@ -1184,22 +1184,25 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
 static int shutdown_other_smbds(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
                                void *p)
 {
-       struct sessionid *sessionid = (struct sessionid *)dbuf.dptr;
+       struct sessionid sessionid;
        const char *ip = (const char *)p;
 
-       if (!process_exists(pid_to_procid(sessionid->pid))) {
+       SMB_ASSERT(dbuf.dsize == sizeof(sessionid));
+       memcpy(&sessionid, dbuf.dptr, sizeof(sessionid));
+
+       if (!process_exists(pid_to_procid(sessionid.pid))) {
                return 0;
        }
 
-       if (sessionid->pid == sys_getpid()) {
+       if (sessionid.pid == sys_getpid()) {
                return 0;
        }
 
-       if (strcmp(ip, sessionid->ip_addr) != 0) {
+       if (strcmp(ip, sessionid.ip_addr) != 0) {
                return 0;
        }
 
-       message_send_pid(pid_to_procid(sessionid->pid), MSG_SHUTDOWN,
+       message_send_pid(pid_to_procid(sessionid.pid), MSG_SHUTDOWN,
                         NULL, 0, True);
        return 0;
 }