Changeset 862 for trunk/server/librpc


Ignore:
Timestamp:
May 13, 2014, 11:39:04 AM (11 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update trunk to 3.6.23

Location:
trunk/server
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/librpc/idl/dcerpc.idl

    r745 r862  
    468468        const uint8 DCERPC_FRAG_LEN_OFFSET =  8;
    469469        const uint8 DCERPC_AUTH_LEN_OFFSET = 10;
     470        const uint8 DCERPC_CALL_ID_OFFSET  = 12;
    470471
    471472        /* little-endian flag */
  • trunk/server/librpc/idl/ntprinting.idl

    r752 r862  
    3131                );
    3232
    33         /* Samba 3 tdb storage format: drivers
     33        /*
     34         * First the string flags and then the Samba 3 tdb storage
     35         * format: drivers
    3436         * "dffffffff" followed by a remaining buffer of "f" array */
    3537
    3638        typedef [flag(NDR_NOALIGN),public] struct {
     39                [skip] uint32 string_flags;
     40
    3741                uint32 version;
    38                 utf8string name;
    39                 utf8string environment;
    40                 utf8string driverpath;
    41                 utf8string datafile;
    42                 utf8string configfile;
    43                 utf8string helpfile;
    44                 utf8string monitorname;
    45                 utf8string defaultdatatype;
    46                 [flag(STR_UTF8|STR_NOTERM|NDR_REMAINING)] string_array dependent_files;
     42                [flag(ndr_ntprinting_string_flags(r->string_flags))] string name;
     43                [flag(ndr_ntprinting_string_flags(r->string_flags))] string environment;
     44                [flag(ndr_ntprinting_string_flags(r->string_flags))] string driverpath;
     45                [flag(ndr_ntprinting_string_flags(r->string_flags))] string datafile;
     46                [flag(ndr_ntprinting_string_flags(r->string_flags))] string configfile;
     47                [flag(ndr_ntprinting_string_flags(r->string_flags))] string helpfile;
     48                [flag(ndr_ntprinting_string_flags(r->string_flags))] string monitorname;
     49                [flag(ndr_ntprinting_string_flags(r->string_flags))] string defaultdatatype;
     50                [flag((ndr_ntprinting_string_flags(r->string_flags)&~STR_NULLTERM)|STR_NOTERM|NDR_REMAINING)] string_array dependent_files;
    4751        } ntprinting_driver;
    4852
     
    5862
    5963        typedef [flag(NDR_NOALIGN),public] struct {
     64                [skip] uint32 string_flags;
     65
    6066                /* uint32 devicemode_ptr; */
    61                 utf8string devicename;
    62                 utf8string formname;
     67                [flag(ndr_ntprinting_string_flags(r->string_flags))] string devicename;
     68                [flag(ndr_ntprinting_string_flags(r->string_flags))] string formname;
    6369                uint16 specversion;
    6470                uint16 driverversion;
     
    96102        } ntprinting_devicemode;
    97103
    98         /* Samba 3 tdb storage format: printer_data
     104        /*
     105         * First the string flags and then the Samba 3 tdb storage
     106         * format: printer_data
    99107         * "p" ptr to printer_data
    100108         * "fdB" */
    101109
    102110        typedef [flag(NDR_NOALIGN),public] struct {
     111                [skip] uint32 string_flags;
     112
    103113                uint32 ptr;
    104                 utf8string name;
     114                [flag(ndr_ntprinting_string_flags(r->string_flags))] string name;
    105115                uint32 type;
    106116                DATA_BLOB data;
    107117        } ntprinting_printer_data;
    108118
    109         /* Samba 3 tdb storage format: printer_info
    110          * "dddddddddddfffffPfffff" */
     119        /*
     120         * First the string flags and then the Samba 3 tdb storage
     121         * format: printer_info
     122         * "dddddddddddfffffPfffff"
     123         */
    111124
    112125        typedef [flag(NDR_NOALIGN),public] struct {
     126                [skip] uint32 string_flags;
     127
    113128                uint32 attributes;
    114129                uint32 priority;
     
    122137                uint32 c_setprinter;
    123138                uint32 setuptime;
    124                 utf8string servername;
    125                 utf8string printername;
    126                 utf8string sharename;
    127                 utf8string portname;
    128                 utf8string drivername;
    129                 utf8string comment;
    130                 utf8string location;
    131                 utf8string sepfile;
    132                 utf8string printprocessor;
    133                 utf8string datatype;
    134                 utf8string parameters;
     139                [flag(ndr_ntprinting_string_flags(r->string_flags))] string servername;
     140                [flag(ndr_ntprinting_string_flags(r->string_flags))] string printername;
     141                [flag(ndr_ntprinting_string_flags(r->string_flags))] string sharename;
     142                [flag(ndr_ntprinting_string_flags(r->string_flags))] string portname;
     143                [flag(ndr_ntprinting_string_flags(r->string_flags))] string drivername;
     144                [flag(ndr_ntprinting_string_flags(r->string_flags))] string comment;
     145                [flag(ndr_ntprinting_string_flags(r->string_flags))] string location;
     146                [flag(ndr_ntprinting_string_flags(r->string_flags))] string sepfile;
     147                [flag(ndr_ntprinting_string_flags(r->string_flags))] string printprocessor;
     148                [flag(ndr_ntprinting_string_flags(r->string_flags))] string datatype;
     149                [flag(ndr_ntprinting_string_flags(r->string_flags))] string parameters;
    135150        } ntprinting_printer_info;
    136151
  • trunk/server/librpc/idl/security.idl

    r752 r862  
    594594                SECINFO_SACL                 = 0x00000008,
    595595                SECINFO_LABEL                = 0x00000010,
     596                SECINFO_ATTRIBUTE            = 0x00000020,
     597                SECINFO_SCOPE                = 0x00000040,
     598                SECINFO_BACKUP               = 0x00010000,
    596599                SECINFO_UNPROTECTED_SACL     = 0x10000000,
    597600                SECINFO_UNPROTECTED_DACL     = 0x20000000,
  • trunk/server/librpc/idl/spoolss.idl

    r752 r862  
    13041304                SPOOLSS_DRIVER_VERSION_NT35     = 1,
    13051305                SPOOLSS_DRIVER_VERSION_NT4      = 2,
    1306                 SPOOLSS_DRIVER_VERSION_200X     = 3
     1306                SPOOLSS_DRIVER_VERSION_200X     = 3,
     1307                SPOOLSS_DRIVER_VERSION_2012     = 4
    13071308        } spoolss_DriverOSVersion;
    13081309
  • trunk/server/librpc/ndr/ndr_ntprinting.c

    r752 r862  
    2323#include "../librpc/gen_ndr/ndr_ntprinting.h"
    2424
     25_PUBLIC_ uint32_t ndr_ntprinting_string_flags(uint32_t string_flags)
     26{
     27        uint32_t flags = LIBNDR_FLAG_STR_NULLTERM;
     28
     29        if (string_flags & LIBNDR_FLAG_STR_ASCII) {
     30                flags |= LIBNDR_FLAG_STR_ASCII;
     31        } else {
     32                flags |= LIBNDR_FLAG_STR_UTF8;
     33        }
     34
     35        return flags;
     36}
     37
    2538_PUBLIC_ enum ndr_err_code ndr_pull_ntprinting_printer(struct ndr_pull *ndr, int ndr_flags, struct ntprinting_printer *r)
    2639{
     
    4457                                _mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr);
    4558                                NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0);
     59                                r->devmode->string_flags = r->info.string_flags;
    4660                                NDR_CHECK(ndr_pull_ntprinting_devicemode(ndr, NDR_SCALARS|NDR_BUFFERS, r->devmode));
    4761                                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
     
    6074                                r->printer_data = talloc_realloc(ndr, r->printer_data, struct ntprinting_printer_data, r->count + 1);
    6175                                NDR_ERR_HAVE_NO_MEMORY(r->printer_data);
     76                                r->printer_data[r->count].string_flags = r->info.string_flags;
    6277                                NDR_CHECK(ndr_pull_ntprinting_printer_data(ndr, NDR_SCALARS, &r->printer_data[r->count]));
    6378                                r->count++;
  • trunk/server/librpc/ndr/ndr_ntprinting.h

    r745 r862  
    2323#include "../librpc/gen_ndr/ndr_ntprinting.h"
    2424
     25_PUBLIC_ uint32_t ndr_ntprinting_string_flags(uint32_t string_flags);
     26
    2527_PUBLIC_ enum ndr_err_code ndr_pull_ntprinting_printer(struct ndr_pull *ndr, int ndr_flags, struct ntprinting_printer *r);
  • trunk/server/librpc/rpc/dcerpc_util.c

    r745 r862  
    4646        } else {
    4747                return RSVAL(blob->data, DCERPC_FRAG_LEN_OFFSET);
     48        }
     49}
     50
     51uint32_t dcerpc_get_call_id(const DATA_BLOB *blob)
     52{
     53        if (CVAL(blob->data,DCERPC_DREP_OFFSET) & DCERPC_DREP_LE) {
     54                return IVAL(blob->data, DCERPC_CALL_ID_OFFSET);
     55        } else {
     56                return RIVAL(blob->data, DCERPC_CALL_ID_OFFSET);
    4857        }
    4958}
     
    224233                ofs = state->buffer.length;
    225234
     235                if (frag_len < ofs) {
     236                        /*
     237                         * something is wrong, let the caller deal with it
     238                         */
     239                        *_vector = NULL;
     240                        *_count = 0;
     241                        return 0;
     242                }
     243
    226244                state->buffer.data = talloc_realloc(state,
    227245                                                    state->buffer.data,
     
    293311        }
    294312
     313        if (state->pkt->frag_length != state->buffer.length) {
     314                tevent_req_nterror(req, NT_STATUS_RPC_PROTOCOL_ERROR);
     315                return;
     316        }
     317
    295318        tevent_req_done(req);
    296319}
  • trunk/server/librpc/rpc/rpc_common.h

    r745 r862  
    136136void dcerpc_set_frag_length(DATA_BLOB *blob, uint16_t v);
    137137uint16_t dcerpc_get_frag_length(const DATA_BLOB *blob);
     138uint32_t dcerpc_get_call_id(const DATA_BLOB *blob);
    138139void dcerpc_set_auth_length(DATA_BLOB *blob, uint16_t v);
    139140uint8_t dcerpc_get_endian_flag(DATA_BLOB *blob);
Note: See TracChangeset for help on using the changeset viewer.