Ignore:
Timestamp:
Nov 14, 2012, 12:59:34 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to 3.6.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source3/libsmb/cliprint.c

    r414 r740  
    1919
    2020#include "includes.h"
     21#include "libsmb/libsmb.h"
     22#include "libsmb/clirap.h"
    2123
    2224/*****************************************************************************
     
    2830                          char *rdata, int rdrcnt)
    2931{
     32        unsigned int offset;
     33
    3034        if (datap == 0) {
    3135                /* turn NULL pointers into zero length strings */
    3236                return "";
    33         } else {
    34                 unsigned int offset = datap - converter;
     37        }
    3538
    36                 if (offset >= rdrcnt) {
    37                         DEBUG(1,("bad char ptr: datap=%u, converter=%u rdrcnt=%d>",
    38                                  datap, converter, rdrcnt));
    39                         return "<ERROR>";
    40                 } else {
    41                         return &rdata[offset];
    42                 }
     39        offset = datap - converter;
     40
     41        if (offset >= rdrcnt) {
     42                DEBUG(1,("bad char ptr: datap=%u, converter=%u rdrcnt=%d>",
     43                         datap, converter, rdrcnt));
     44                return "<ERROR>";
    4345        }
     46        return &rdata[offset];
    4447}
    4548
     
    98101                                        fix_char_ptr(SVAL(p,4), converter,
    99102                                                     rdata, rdrcnt));
    100                                 job.t = cli_make_unix_date3(cli, p + 12);
     103                                job.t = make_unix_date3(
     104                                        p + 12, cli->serverzone);
    101105                                job.size = IVAL(p,16);
    102106                                fstrcpy(job.name,fix_char_ptr(SVAL(p,24),
     
    154158        return ret;
    155159}
    156 
    157 
    158 /****************************************************************************
    159  Open a spool file
    160 ****************************************************************************/
    161 
    162 int cli_spl_open(struct cli_state *cli, const char *fname, int flags, int share_mode)
    163 {
    164         char *p;
    165         unsigned openfn=0;
    166         unsigned accessmode=0;
    167 
    168         if (flags & O_CREAT)
    169                 openfn |= (1<<4);
    170         if (!(flags & O_EXCL)) {
    171                 if (flags & O_TRUNC)
    172                         openfn |= (1<<1);
    173                 else
    174                         openfn |= (1<<0);
    175         }
    176 
    177         accessmode = (share_mode<<4);
    178 
    179         if ((flags & O_ACCMODE) == O_RDWR) {
    180                 accessmode |= 2;
    181         } else if ((flags & O_ACCMODE) == O_WRONLY) {
    182                 accessmode |= 1;
    183         }
    184 
    185 #if defined(O_SYNC)
    186         if ((flags & O_SYNC) == O_SYNC) {
    187                 accessmode |= (1<<14);
    188         }
    189 #endif /* O_SYNC */
    190 
    191         if (share_mode == DENY_FCB) {
    192                 accessmode = 0xFF;
    193         }
    194 
    195         memset(cli->outbuf,'\0',smb_size);
    196         memset(cli->inbuf,'\0',smb_size);
    197 
    198         cli_set_message(cli->outbuf,15,0,True);
    199 
    200         SCVAL(cli->outbuf,smb_com,SMBsplopen);
    201         SSVAL(cli->outbuf,smb_tid,cli->cnum);
    202         cli_setup_packet(cli);
    203 
    204         SSVAL(cli->outbuf,smb_vwv0,0xFF);
    205         SSVAL(cli->outbuf,smb_vwv2,0);  /* no additional info */
    206         SSVAL(cli->outbuf,smb_vwv3,accessmode);
    207         SSVAL(cli->outbuf,smb_vwv4,aSYSTEM | aHIDDEN);
    208         SSVAL(cli->outbuf,smb_vwv5,0);
    209         SSVAL(cli->outbuf,smb_vwv8,openfn);
    210 
    211         if (cli->use_oplocks) {
    212                 /* if using oplocks then ask for a batch oplock via
    213                    core and extended methods */
    214                 SCVAL(cli->outbuf,smb_flg, CVAL(cli->outbuf,smb_flg)|
    215                         FLAG_REQUEST_OPLOCK|FLAG_REQUEST_BATCH_OPLOCK);
    216                 SSVAL(cli->outbuf,smb_vwv2,SVAL(cli->outbuf,smb_vwv2) | 6);
    217         }
    218 
    219         p = smb_buf(cli->outbuf);
    220         p += clistr_push(cli, p, fname, -1, STR_TERMINATE);
    221 
    222         cli_setup_bcc(cli, p);
    223 
    224         cli_send_smb(cli);
    225         if (!cli_receive_smb(cli)) {
    226                 return -1;
    227         }
    228 
    229         if (cli_is_error(cli)) {
    230                 return -1;
    231         }
    232 
    233         return SVAL(cli->inbuf,smb_vwv2);
    234 }
    235 
    236 /****************************************************************************
    237  Close a file.
    238 ****************************************************************************/
    239 
    240 bool cli_spl_close(struct cli_state *cli, uint16_t fnum)
    241 {
    242         memset(cli->outbuf,'\0',smb_size);
    243         memset(cli->inbuf,'\0',smb_size);
    244 
    245         cli_set_message(cli->outbuf,3,0,True);
    246 
    247         SCVAL(cli->outbuf,smb_com,SMBsplclose);
    248         SSVAL(cli->outbuf,smb_tid,cli->cnum);
    249         cli_setup_packet(cli);
    250 
    251         SSVAL(cli->outbuf,smb_vwv0,fnum);
    252         SIVALS(cli->outbuf,smb_vwv1,-1);
    253 
    254         cli_send_smb(cli);
    255         if (!cli_receive_smb(cli)) {
    256                 return False;
    257         }
    258 
    259         return !cli_is_error(cli);
    260 }
Note: See TracChangeset for help on using the changeset viewer.