r18965: fixed the bug with RPC-NETLOGON and solaris sparc machines. This bug
authorAndrew Tridgell <tridge@samba.org>
Wed, 27 Sep 2006 23:24:36 +0000 (23:24 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:20:24 +0000 (14:20 -0500)
took a _LONG_ time to find.

The problem was that when encoding/decoding password buffers we use
the pull/push string functions, which by default align unicode
strings. But on solaris sparc the buffer is not aligned always (its a
stack variable, an array of uint8_t). That perfectly OK in C, so we
just tell the pull/push functions not to auto-align.
(This used to be commit bb7835eced00607eb6b1725be6d96a6dcb842049)

source4/libcli/auth/smbencrypt.c

index 9fce590d439f21526f9b08587dbf55a0df6fd0fd..67da795a44b34889db363bff3ce56d0e43effe37 100644 (file)
@@ -460,6 +460,9 @@ BOOL encode_pw_buffer(uint8_t buffer[516], const char *password, int string_flag
        uint8_t new_pw[512];
        size_t new_pw_len;
 
+       /* the incoming buffer can be any alignment. */
+       string_flags |= STR_NOALIGN;
+
        new_pw_len = push_string(new_pw,
                                 password, 
                                 sizeof(new_pw), string_flags);
@@ -489,6 +492,9 @@ BOOL decode_pw_buffer(uint8_t in_buffer[516], char *new_pwrd,
 {
        int byte_len=0;
 
+       /* the incoming buffer can be any alignment. */
+       string_flags |= STR_NOALIGN;
+
        /*
          Warning !!! : This function is called from some rpc call.
          The password IN the buffer may be a UNICODE string.