Ignore:
Timestamp:
Nov 25, 2016, 8:04:54 PM (9 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to version 4.4.7

Location:
vendor/current/source4/rpc_server
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source4/rpc_server/common/server_info.c

    r988 r989  
    2727#include "param/param.h"
    2828#include "rpc_server/common/common.h"
    29 #include "rpc_server/common/share.h"
    3029#include "libds/common/roles.h"
    3130
  • vendor/current/source4/rpc_server/dcerpc_server.c

    r988 r989  
    409409        p->max_recv_frag = 5840;
    410410        p->max_xmit_frag = 5840;
     411        p->max_total_request_size = DCERPC_NCACN_REQUEST_DEFAULT_MAX_SIZE;
    411412
    412413        *_p = p;
     
    804805                TALLOC_FREE(call->context);
    805806
     807                if (call->fault_code == DCERPC_NCA_S_PROTO_ERROR) {
     808                        return dcesrv_bind_nak(call,
     809                        DCERPC_BIND_NAK_REASON_PROTOCOL_VERSION_NOT_SUPPORTED);
     810                }
     811
    806812                if (auth->auth_level != DCERPC_AUTH_LEVEL_NONE) {
    807813                        /*
     
    936942        if (!dcesrv_auth_auth3(call)) {
    937943                call->conn->auth_state.auth_invalid = true;
     944                if (call->fault_code != 0) {
     945                        return dcesrv_fault_disconnect(call, call->fault_code);
     946                }
    938947        }
    939948
     
    11051114        auth_ok = dcesrv_auth_alter(call);
    11061115        if (!auth_ok) {
    1107                 if (call->in_auth_info.auth_type == DCERPC_AUTH_TYPE_NONE) {
    1108                         return dcesrv_fault_disconnect(call,
    1109                                         DCERPC_FAULT_ACCESS_DENIED);
     1116                if (call->fault_code != 0) {
     1117                        return dcesrv_fault_disconnect(call, call->fault_code);
    11101118                }
    11111119        }
     
    15331541                 * Up to 4 MByte are allowed by all fragments
    15341542                 */
    1535                 available = DCERPC_NCACN_PAYLOAD_MAX_SIZE;
     1543                available = dce_conn->max_total_request_size;
    15361544                if (er->stub_and_verifier.length > available) {
    15371545                        dcesrv_call_disconnect_after(existing,
     
    15861594                 * Up to 4 MByte are allowed by all fragments
    15871595                 */
    1588                 if (call->pkt.u.request.alloc_hint > DCERPC_NCACN_PAYLOAD_MAX_SIZE) {
     1596                if (call->pkt.u.request.alloc_hint > dce_conn->max_total_request_size) {
    15891597                        dcesrv_call_disconnect_after(call,
    15901598                                "dcesrv_auth_request - initial alloc hint too large");
  • vendor/current/source4/rpc_server/dcerpc_server.h

    r988 r989  
    274274        /* the association group the connection belongs to */
    275275        struct dcesrv_assoc_group *assoc_group;
     276
     277        /* The maximum total payload of reassembled request pdus */
     278        size_t max_total_request_size;
    276279};
    277280
  • vendor/current/source4/rpc_server/dcesrv_auth.c

    r988 r989  
    4545        struct dcesrv_auth *auth = &dce_conn->auth_state;
    4646        NTSTATUS status;
    47         uint32_t auth_length;
    4847
    4948        if (pkt->auth_length == 0) {
     
    5655        status = dcerpc_pull_auth_trailer(pkt, call, &pkt->u.bind.auth_info,
    5756                                          &call->in_auth_info,
    58                                           &auth_length, false);
    59         if (!NT_STATUS_IS_OK(status)) {
     57                                          NULL, true);
     58        if (!NT_STATUS_IS_OK(status)) {
     59                /*
     60                 * This will cause a
     61                 * DCERPC_BIND_NAK_REASON_PROTOCOL_VERSION_NOT_SUPPORTED
     62                 * in the caller
     63                 */
     64                call->fault_code = DCERPC_NCA_S_PROTO_ERROR;
    6065                return false;
    6166        }
     
    242247        struct dcesrv_connection *dce_conn = call->conn;
    243248        NTSTATUS status;
    244         uint32_t auth_length;
    245249
    246250        if (pkt->auth_length == 0) {
     
    258262
    259263        status = dcerpc_pull_auth_trailer(pkt, call, &pkt->u.auth3.auth_info,
    260                                           &call->in_auth_info, &auth_length, true);
    261         if (!NT_STATUS_IS_OK(status)) {
     264                                          &call->in_auth_info, NULL, true);
     265        if (!NT_STATUS_IS_OK(status)) {
     266                /*
     267                 * Windows returns DCERPC_NCA_S_FAULT_REMOTE_NO_MEMORY
     268                 * instead of DCERPC_NCA_S_PROTO_ERROR.
     269                 */
     270                call->fault_code = DCERPC_NCA_S_FAULT_REMOTE_NO_MEMORY;
    262271                return false;
    263272        }
     
    325334        struct dcesrv_connection *dce_conn = call->conn;
    326335        NTSTATUS status;
    327         uint32_t auth_length;
    328336
    329337        /* on a pure interface change there is no auth blob */
     
    336344
    337345        if (dce_conn->auth_state.auth_finished) {
     346                call->fault_code = DCERPC_FAULT_ACCESS_DENIED;
    338347                return false;
    339348        }
     
    345354
    346355        status = dcerpc_pull_auth_trailer(pkt, call, &pkt->u.alter.auth_info,
    347                                           &call->in_auth_info, &auth_length, true);
    348         if (!NT_STATUS_IS_OK(status)) {
     356                                          &call->in_auth_info, NULL, true);
     357        if (!NT_STATUS_IS_OK(status)) {
     358                call->fault_code = DCERPC_NCA_S_PROTO_ERROR;
     359                return false;
     360        }
     361
     362        if (call->in_auth_info.auth_type == DCERPC_AUTH_TYPE_NONE) {
     363                call->fault_code = DCERPC_FAULT_ACCESS_DENIED;
    349364                return false;
    350365        }
  • vendor/current/source4/rpc_server/wkssvc/dcesrv_wkssvc.c

    r988 r989  
    2525#include "librpc/gen_ndr/ndr_srvsvc.h"
    2626#include "rpc_server/common/common.h"
    27 #include "rpc_server/common/share.h"
    2827#include "param/param.h"
    2928
  • vendor/current/source4/rpc_server/wscript_build

    r988 r989  
    22
    33bld.SAMBA_SUBSYSTEM('DCERPC_SHARE',
    4         source='common/server_info.c common/share_info.c',
     4        source='common/share_info.c',
    55        autoproto='common/share.h',
    66        deps='ldb',
    7         enabled=bld.AD_DC_BUILD_IS_ENABLED()
     7        enabled=bld.CONFIG_SET('WITH_NTVFS_FILESERVER'),
    88        )
    99
    1010bld.SAMBA_SUBSYSTEM('DCERPC_COMMON',
    11         source='common/forward.c common/reply.c dcesrv_auth.c common/loadparm.c',
     11        source='common/server_info.c common/forward.c common/reply.c dcesrv_auth.c common/loadparm.c',
    1212        autoproto='common/proto.h',
    1313        deps='ldb DCERPC_SHARE samba_server_gensec',
     
    5555        subsystem='dcerpc_server',
    5656        init_function='dcerpc_server_srvsvc_init',
    57         deps='DCERPC_COMMON NDR_SRVSVC share ntvfs'
     57        deps='DCERPC_COMMON NDR_SRVSVC share ntvfs',
     58        enabled=bld.CONFIG_SET('WITH_NTVFS_FILESERVER')
    5859        )
    5960
     
    8990        init_function='dcerpc_server_winreg_init',
    9091        deps='registry ndr-standard',
    91         internal_module=True
     92        internal_module=True,
     93        enabled=bld.CONFIG_SET('WITH_NTVFS_FILESERVER')
    9294        )
    9395
     
    133135        init_function='dcerpc_server_spoolss_init',
    134136        deps='DCERPC_COMMON NDR_SPOOLSS ntptr RPC_NDR_SPOOLSS',
    135         internal_module=True
     137        internal_module=True,
     138        enabled=bld.CONFIG_SET('WITH_NTVFS_FILESERVER')
    136139        )
    137140
Note: See TracChangeset for help on using the changeset viewer.