Ignore:
Timestamp:
May 23, 2008, 6:56:41 AM (17 years ago)
Author:
Paul Smedley
Message:

Update source to 3.0.29

Location:
branches/samba-3.0/source/libsmb
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.0/source/libsmb/cliconnect.c

    r124 r134  
    250250                p += clistr_push(cli, p, pass, -1, STR_TERMINATE); /* password */
    251251                SSVAL(cli->outbuf,smb_vwv7,PTR_DIFF(p, smb_buf(cli->outbuf)));
    252         }
    253         else {
     252        } else {
     253                /* For ucs2 passwords clistr_push calls ucs2_align, which causes
     254                 * the space taken by the unicode password to be one byte too
     255                 * long (as we're on an odd byte boundary here). Reduce the
     256                 * count by 1 to cope with this. Fixes smbclient against NetApp
     257                 * servers which can't cope. Fix from
     258                 * bryan.kolodziej@allenlund.com in bug #3840.
     259                 */
    254260                p += clistr_push(cli, p, pass, -1, STR_UNICODE|STR_TERMINATE); /* unicode password */
    255                 SSVAL(cli->outbuf,smb_vwv8,PTR_DIFF(p, smb_buf(cli->outbuf))); 
     261                SSVAL(cli->outbuf,smb_vwv8,PTR_DIFF(p, smb_buf(cli->outbuf))-1);       
    256262        }
    257263       
     
    10271033
    10281034        return NT_STATUS_OK;
    1029 
    10301035}
    10311036
  • branches/samba-3.0/source/libsmb/clireadwrite.c

    r44 r134  
    353353
    354354        while (received < blocks) {
     355                ssize_t size1 = 0;
    355356
    356357                while ((issued - received < mpx) && (issued < blocks)) {
    357358                        ssize_t bsent = issued * block;
    358                         ssize_t size1 = MIN(block, size - bsent);
     359
     360                        size1 = MIN(block, size - bsent);
    359361
    360362                        if (!cli_issue_write(cli, fnum, offset + bsent,
     
    375377
    376378                bwritten += SVAL(cli->inbuf, smb_vwv2);
    377                 bwritten += (((int)(SVAL(cli->inbuf, smb_vwv4)))<<16);
     379                if (size1 > 0xFFFF) {
     380                        bwritten += (((int)(SVAL(cli->inbuf, smb_vwv4)))<<16);
     381                }
    378382        }
    379383
  • branches/samba-3.0/source/libsmb/clitrans.c

    r124 r134  
    9696        }
    9797
     98        /* Note we're in a trans state. Save the sequence
     99         * numbers for replies. */
     100        client_set_trans_sign_state_on(cli, mid);
     101
    98102        if (this_ldata < ldata || this_lparam < lparam) {
    99103                /* receive interim response */
    100104                if (!cli_receive_smb(cli) || cli_is_error(cli)) {
     105                        client_set_trans_sign_state_off(cli, mid);
    101106                        return(False);
    102107                }
     
    108113                        this_lparam = MIN(lparam-tot_param,cli->max_xmit - 500); /* hack */
    109114                        this_ldata = MIN(ldata-tot_data,cli->max_xmit - (500+this_lparam));
     115
     116                        client_set_trans_sign_state_off(cli, mid);
     117                        client_set_trans_sign_state_on(cli, mid);
    110118
    111119                        set_message(cli->outbuf,trans==SMBtrans?8:9,0,True);
     
    140148                        show_msg(cli->outbuf);
    141149                        if (!cli_send_smb(cli)) {
     150                                client_set_trans_sign_state_off(cli, mid);
    142151                                return False;
    143152                        }
     
    318327  out:
    319328
     329        client_set_trans_sign_state_off(cli, SVAL(cli->inbuf,smb_mid));
    320330        return ret;
    321331}
     
    385395        }       
    386396
     397        /* Note we're in a trans state. Save the sequence
     398         * numbers for replies. */
     399        client_set_trans_sign_state_on(cli, mid);
     400
    387401        if (this_ldata < ldata || this_lparam < lparam) {
    388402                /* receive interim response */
    389403                if (!cli_receive_smb(cli) || cli_is_error(cli)) {
     404                        client_set_trans_sign_state_off(cli, mid);
    390405                        return(False);
    391406                }
     
    429444
    430445                        if (!cli_send_smb(cli)) {
     446                                client_set_trans_sign_state_off(cli, mid);
    431447                                return False;
    432448                        }
     
    628644  out:
    629645
     646        client_set_trans_sign_state_off(cli, SVAL(cli->inbuf,smb_mid));
    630647        return ret;
    631648}
  • branches/samba-3.0/source/libsmb/libsmbclient.c

    r71 r134  
    63656365        SAFE_FREE(context->user);
    63666366       
    6367         DEBUG(3, ("Context %p succesfully freed\n", context));
     6367        DEBUG(3, ("Context %p successfully freed\n", context));
    63686368        SAFE_FREE(context->internal);
    63696369        SAFE_FREE(context);
  • branches/samba-3.0/source/libsmb/nterr.c

    r1 r134  
    536536        { "NT_STATUS_DS_NO_MORE_RIDS", NT_STATUS_DS_NO_MORE_RIDS },
    537537        { "NT_STATUS_NOT_A_REPARSE_POINT", NT_STATUS_NOT_A_REPARSE_POINT },
     538        { "NT_STATUS_DOWNGRADE_DETECTED", NT_STATUS_DOWNGRADE_DETECTED },
    538539        { "NT_STATUS_NO_MORE_ENTRIES", NT_STATUS_NO_MORE_ENTRIES },
    539540        { "STATUS_MORE_ENTRIES", STATUS_MORE_ENTRIES },
  • branches/samba-3.0/source/libsmb/smb_signing.c

    r124 r134  
    2727        uint16 mid;
    2828        uint32 reply_seq_num;
     29        BOOL can_delete; /* Set to False in trans state. */
    2930};
    3031
     
    4344        for (t = *list; t; t = t->next) {
    4445                if (t->mid == mid) {
    45                         DLIST_REMOVE(*list, t);
    46                         SAFE_FREE(t);
    47                         break;
     46                        return False;
    4847                }
    4948        }
     
    5453        t->mid = mid;
    5554        t->reply_seq_num = reply_seq_num;
     55        t->can_delete = True;
    5656
    5757        /*
     
    8080                        DEBUG(10,("get_sequence_for_reply: found seq = %u mid = %u\n",
    8181                                (unsigned int)t->reply_seq_num, (unsigned int)t->mid ));
    82                         DLIST_REMOVE(*list, t);
    83                         SAFE_FREE(t);
     82                        if (t->can_delete) {
     83                                DLIST_REMOVE(*list, t);
     84                                SAFE_FREE(t);
     85                        }
     86                        return True;
     87                }
     88        }
     89        return False;
     90}
     91
     92static BOOL set_sequence_can_delete_flag(struct outstanding_packet_lookup **list, uint16 mid, BOOL can_delete_entry)
     93{
     94        struct outstanding_packet_lookup *t;
     95
     96        for (t = *list; t; t = t->next) {
     97                if (t->mid == mid) {
     98                        t->can_delete = can_delete_entry;
    8499                        return True;
    85100                }
     
    590605
    591606/***********************************************************
     607 Enter trans/trans2/nttrans state.
     608************************************************************/
     609
     610BOOL client_set_trans_sign_state_on(struct cli_state *cli, uint16 mid)
     611{
     612        struct smb_sign_info *si = &cli->sign_info;
     613        struct smb_basic_signing_context *data = (struct smb_basic_signing_context *)si->signing_context;
     614
     615        if (!si->doing_signing) {
     616                return True;
     617        }
     618
     619        if (!data) {
     620                return False;
     621        }
     622
     623        if (!set_sequence_can_delete_flag(&data->outstanding_packet_list, mid, False)) {
     624                return False;
     625        }
     626
     627        return True;
     628}
     629
     630/***********************************************************
     631 Leave trans/trans2/nttrans state.
     632************************************************************/
     633
     634BOOL client_set_trans_sign_state_off(struct cli_state *cli, uint16 mid)
     635{
     636        uint32 reply_seq_num;
     637        struct smb_sign_info *si = &cli->sign_info;
     638        struct smb_basic_signing_context *data = (struct smb_basic_signing_context *)si->signing_context;
     639
     640        if (!si->doing_signing) {
     641                return True;
     642        }
     643
     644        if (!data) {
     645                return False;
     646        }
     647
     648        if (!set_sequence_can_delete_flag(&data->outstanding_packet_list, mid, True)) {
     649                return False;
     650        }
     651
     652        /* Now delete the stored mid entry. */
     653        if (!get_sequence_for_reply(&data->outstanding_packet_list, mid, &reply_seq_num)) {
     654                return False;
     655        }
     656
     657        return True;
     658}
     659
     660/***********************************************************
    592661 SMB signing - Server implementation - send the MAC.
    593662************************************************************/
  • branches/samba-3.0/source/libsmb/trusts_util.c

    r124 r134  
    4242
    4343        if (cli->auth.auth_type != PIPE_AUTH_TYPE_SCHANNEL) {
    44                 uint32 neg_flags = NETLOGON_NEG_SELECT_AUTH2_FLAGS;
     44                uint32_t neg_flags = NETLOGON_NEG_AUTH2_ADS_FLAGS;
    4545
    4646                result = rpccli_netlogon_setup_creds(cli,
Note: See TracChangeset for help on using the changeset viewer.