]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
changed the SMBtrans reply code to align at the same alignment as
authorAndrew Tridgell <tridge@samba.org>
Thu, 3 Sep 1998 05:37:15 +0000 (05:37 +0000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 3 Sep 1998 05:37:15 +0000 (05:37 +0000)
observed from NT. We were aligning the data before but not the
parameters. This aligns both.

This change may break some other parts of ipc.c if we have relied on
the alignment somewhere, so if you think this broke something then let
me know.

source/smbd/ipc.c

index e3b39e6eb22791fc7de0d3b7fb30fe7430b4a73d..048afe35cd3f8b6cca4d0fc2f4e22b59041d2d01 100644 (file)
@@ -144,7 +144,7 @@ static void copy_trans_params_and_data(char *outbuf, int align,
                                int param_offset, int data_offset,
                                int param_len, int data_len)
 {
-       char *copy_into = smb_buf(outbuf);
+       char *copy_into = smb_buf(outbuf)+1;
 
        DEBUG(5,("copy_trans_params_and_data: params[%d..%d] data[%d..%d]\n",
                        param_offset, param_offset + param_len,
@@ -182,14 +182,9 @@ static void send_trans_reply(char *outbuf,
        this_lparam = MIN(lparam,max_send - (500+lsetup*SIZEOFWORD)); /* hack */
        this_ldata  = MIN(ldata,max_send - (500+lsetup*SIZEOFWORD+this_lparam));
 
-#ifdef CONFUSE_NETMONITOR_MSRPC_DECODING
-       /* if you don't want Net Monitor to decode your packets, do this!!! */
-       align = ((this_lparam+1)%4);
-#else
-       align = (this_lparam%4);
-#endif
+       align = ((this_lparam)%4);
 
-       set_message(outbuf,10+lsetup,align+this_ldata+this_lparam,True);
+       set_message(outbuf,10+lsetup,1+align+this_ldata+this_lparam,True);
 
        if (buffer_too_large)
        {
@@ -206,10 +201,10 @@ static void send_trans_reply(char *outbuf,
        SSVAL(outbuf,smb_vwv0,lparam);
        SSVAL(outbuf,smb_vwv1,ldata);
        SSVAL(outbuf,smb_vwv3,this_lparam);
-       SSVAL(outbuf,smb_vwv4,smb_offset(smb_buf(outbuf),outbuf));
+       SSVAL(outbuf,smb_vwv4,smb_offset(smb_buf(outbuf)+1,outbuf));
        SSVAL(outbuf,smb_vwv5,0);
        SSVAL(outbuf,smb_vwv6,this_ldata);
-       SSVAL(outbuf,smb_vwv7,smb_offset(smb_buf(outbuf)+this_lparam+align,outbuf));
+       SSVAL(outbuf,smb_vwv7,smb_offset(smb_buf(outbuf)+1+this_lparam+align,outbuf));
        SSVAL(outbuf,smb_vwv8,0);
        SSVAL(outbuf,smb_vwv9,lsetup);
 
@@ -231,7 +226,7 @@ static void send_trans_reply(char *outbuf,
 
                align = (this_lparam%4);
 
-               set_message(outbuf,10,this_ldata+this_lparam+align,False);
+               set_message(outbuf,10,1+this_ldata+this_lparam+align,False);
 
                copy_trans_params_and_data(outbuf, align,
                                           rparam     , rdata,
@@ -239,10 +234,10 @@ static void send_trans_reply(char *outbuf,
                                           this_lparam, this_ldata);
 
                SSVAL(outbuf,smb_vwv3,this_lparam);
-               SSVAL(outbuf,smb_vwv4,smb_offset(smb_buf(outbuf),outbuf));
+               SSVAL(outbuf,smb_vwv4,smb_offset(smb_buf(outbuf)+1,outbuf));
                SSVAL(outbuf,smb_vwv5,tot_param);
                SSVAL(outbuf,smb_vwv6,this_ldata);
-               SSVAL(outbuf,smb_vwv7,smb_offset(smb_buf(outbuf)+this_lparam+align,outbuf));
+               SSVAL(outbuf,smb_vwv7,smb_offset(smb_buf(outbuf)+1+this_lparam+align,outbuf));
                SSVAL(outbuf,smb_vwv8,tot_data);
                SSVAL(outbuf,smb_vwv9,0);