Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source4/libcli/raw/rawfile.c

    r414 r745  
    349349        if (parms->ntcreatex.in.sec_desc) {
    350350                enum ndr_err_code ndr_err;
    351                 ndr_err = ndr_push_struct_blob(&sd_blob, mem_ctx, NULL,
     351                ndr_err = ndr_push_struct_blob(&sd_blob, mem_ctx,
    352352                                               parms->ntcreatex.in.sec_desc,
    353353                                               (ndr_push_flags_fn_t)ndr_push_security_descriptor);
     
    380380
    381381        SIVAL(params,  0, parms->ntcreatex.in.flags);
    382         SIVAL(params,  4, parms->ntcreatex.in.root_fid);
     382        SIVAL(params,  4, parms->ntcreatex.in.root_fid.fnum);
    383383        SIVAL(params,  8, parms->ntcreatex.in.access_mask);
    384384        SBVAL(params, 12, parms->ntcreatex.in.alloc_size);
     
    565565                SCVAL(req->out.vwv, VWV(2),0); /* padding */
    566566                SIVAL(req->out.vwv,  7, parms->ntcreatex.in.flags);
    567                 SIVAL(req->out.vwv, 11, parms->ntcreatex.in.root_fid);
     567                SIVAL(req->out.vwv, 11, parms->ntcreatex.in.root_fid.fnum);
    568568                SIVAL(req->out.vwv, 15, parms->ntcreatex.in.access_mask);
    569569                SBVAL(req->out.vwv, 19, parms->ntcreatex.in.alloc_size);
     
    617617                }
    618618                break;
     619
     620        case RAW_OPEN_NTCREATEX_READX:
     621                SETUP_REQUEST(SMBntcreateX, 24, 0);
     622                SSVAL(req->out.vwv, VWV(0),SMB_CHAIN_NONE);
     623                SSVAL(req->out.vwv, VWV(1),0);
     624                SCVAL(req->out.vwv, VWV(2),0); /* padding */
     625                SIVAL(req->out.vwv,  7, parms->ntcreatexreadx.in.flags);
     626                SIVAL(req->out.vwv, 11, parms->ntcreatexreadx.in.root_fid.fnum);
     627                SIVAL(req->out.vwv, 15, parms->ntcreatexreadx.in.access_mask);
     628                SBVAL(req->out.vwv, 19, parms->ntcreatexreadx.in.alloc_size);
     629                SIVAL(req->out.vwv, 27, parms->ntcreatexreadx.in.file_attr);
     630                SIVAL(req->out.vwv, 31, parms->ntcreatexreadx.in.share_access);
     631                SIVAL(req->out.vwv, 35, parms->ntcreatexreadx.in.open_disposition);
     632                SIVAL(req->out.vwv, 39, parms->ntcreatexreadx.in.create_options);
     633                SIVAL(req->out.vwv, 43, parms->ntcreatexreadx.in.impersonation);
     634                SCVAL(req->out.vwv, 47, parms->ntcreatexreadx.in.security_flags);
     635
     636                smbcli_req_append_string_len(req, parms->ntcreatexreadx.in.fname, STR_TERMINATE, &len);
     637                SSVAL(req->out.vwv, 5, len);
     638
     639                if (tree->session->transport->negotiate.capabilities & CAP_LARGE_FILES) {
     640                        bigoffset = true;
     641                }
     642
     643                smbcli_chained_request_setup(req, SMBreadX, bigoffset ? 12 : 10, 0);
     644
     645                SSVAL(req->out.vwv, VWV(0), SMB_CHAIN_NONE);
     646                SSVAL(req->out.vwv, VWV(1), 0);
     647                SSVAL(req->out.vwv, VWV(2), 0);
     648                SIVAL(req->out.vwv, VWV(3), parms->ntcreatexreadx.in.offset);
     649                SSVAL(req->out.vwv, VWV(5), parms->ntcreatexreadx.in.maxcnt & 0xFFFF);
     650                SSVAL(req->out.vwv, VWV(6), parms->ntcreatexreadx.in.mincnt);
     651                SIVAL(req->out.vwv, VWV(7), parms->ntcreatexreadx.in.maxcnt >> 16);
     652                SSVAL(req->out.vwv, VWV(9), parms->ntcreatexreadx.in.remaining);
     653                if (bigoffset) {
     654                        SIVAL(req->out.vwv, VWV(10),parms->ntcreatexreadx.in.offset>>32);
     655                }
     656                break;
     657
    619658        case RAW_OPEN_SMB2:
    620659                return NULL;
     
    754793                }
    755794                break;
     795
     796        case RAW_OPEN_NTCREATEX_READX:
     797                SMBCLI_CHECK_MIN_WCT(req, 34);
     798                parms->ntcreatexreadx.out.oplock_level =              CVAL(req->in.vwv, 4);
     799                parms->ntcreatexreadx.out.file.fnum =                 SVAL(req->in.vwv, 5);
     800                parms->ntcreatexreadx.out.create_action =             IVAL(req->in.vwv, 7);
     801                parms->ntcreatexreadx.out.create_time =   smbcli_pull_nttime(req->in.vwv, 11);
     802                parms->ntcreatexreadx.out.access_time =   smbcli_pull_nttime(req->in.vwv, 19);
     803                parms->ntcreatexreadx.out.write_time =    smbcli_pull_nttime(req->in.vwv, 27);
     804                parms->ntcreatexreadx.out.change_time =   smbcli_pull_nttime(req->in.vwv, 35);
     805                parms->ntcreatexreadx.out.attrib =                   IVAL(req->in.vwv, 43);
     806                parms->ntcreatexreadx.out.alloc_size =               BVAL(req->in.vwv, 47);
     807                parms->ntcreatexreadx.out.size =                     BVAL(req->in.vwv, 55);
     808                parms->ntcreatexreadx.out.file_type =                SVAL(req->in.vwv, 63);
     809                parms->ntcreatexreadx.out.ipc_state =                SVAL(req->in.vwv, 65);
     810                parms->ntcreatexreadx.out.is_directory =             CVAL(req->in.vwv, 67);
     811
     812                status = smbcli_chained_advance(req);
     813                if (!NT_STATUS_IS_OK(status)) {
     814                        return status;
     815                }
     816
     817                SMBCLI_CHECK_WCT(req, 12);
     818                parms->ntcreatexreadx.out.remaining       = SVAL(req->in.vwv, VWV(2));
     819                parms->ntcreatexreadx.out.compaction_mode = SVAL(req->in.vwv, VWV(3));
     820                parms->ntcreatexreadx.out.nread = SVAL(req->in.vwv, VWV(5));
     821                if (parms->ntcreatexreadx.out.nread >
     822                    MAX(parms->ntcreatexreadx.in.mincnt, parms->ntcreatexreadx.in.maxcnt) ||
     823                    !smbcli_raw_pull_data(&req->in.bufinfo, req->in.hdr + SVAL(req->in.vwv, VWV(6)),
     824                                          parms->ntcreatexreadx.out.nread,
     825                                          parms->ntcreatexreadx.out.data)) {
     826                        req->status = NT_STATUS_BUFFER_TOO_SMALL;
     827                }
     828                break;
     829
    756830        case RAW_OPEN_SMB2:
    757831                req->status = NT_STATUS_INTERNAL_ERROR;
     
    845919        case RAW_LOCK_LOCKX: {
    846920                struct smb_lock_entry *lockp;
    847                 uint_t lck_size = (parms->lockx.in.mode & LOCKING_ANDX_LARGE_FILES)? 20 : 10;
    848                 uint_t lock_count = parms->lockx.in.ulock_cnt + parms->lockx.in.lock_cnt;
     921                unsigned int lck_size = (parms->lockx.in.mode & LOCKING_ANDX_LARGE_FILES)? 20 : 10;
     922                unsigned int lock_count = parms->lockx.in.ulock_cnt + parms->lockx.in.lock_cnt;
    849923                int i;
    850924
Note: See TracChangeset for help on using the changeset viewer.