Changeset 989 for vendor/current/source4/rpc_server
- Timestamp:
- Nov 25, 2016, 8:04:54 PM (9 years ago)
- Location:
- vendor/current/source4/rpc_server
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source4/rpc_server/common/server_info.c
r988 r989 27 27 #include "param/param.h" 28 28 #include "rpc_server/common/common.h" 29 #include "rpc_server/common/share.h"30 29 #include "libds/common/roles.h" 31 30 -
vendor/current/source4/rpc_server/dcerpc_server.c
r988 r989 409 409 p->max_recv_frag = 5840; 410 410 p->max_xmit_frag = 5840; 411 p->max_total_request_size = DCERPC_NCACN_REQUEST_DEFAULT_MAX_SIZE; 411 412 412 413 *_p = p; … … 804 805 TALLOC_FREE(call->context); 805 806 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 806 812 if (auth->auth_level != DCERPC_AUTH_LEVEL_NONE) { 807 813 /* … … 936 942 if (!dcesrv_auth_auth3(call)) { 937 943 call->conn->auth_state.auth_invalid = true; 944 if (call->fault_code != 0) { 945 return dcesrv_fault_disconnect(call, call->fault_code); 946 } 938 947 } 939 948 … … 1105 1114 auth_ok = dcesrv_auth_alter(call); 1106 1115 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); 1110 1118 } 1111 1119 } … … 1533 1541 * Up to 4 MByte are allowed by all fragments 1534 1542 */ 1535 available = DCERPC_NCACN_PAYLOAD_MAX_SIZE;1543 available = dce_conn->max_total_request_size; 1536 1544 if (er->stub_and_verifier.length > available) { 1537 1545 dcesrv_call_disconnect_after(existing, … … 1586 1594 * Up to 4 MByte are allowed by all fragments 1587 1595 */ 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) { 1589 1597 dcesrv_call_disconnect_after(call, 1590 1598 "dcesrv_auth_request - initial alloc hint too large"); -
vendor/current/source4/rpc_server/dcerpc_server.h
r988 r989 274 274 /* the association group the connection belongs to */ 275 275 struct dcesrv_assoc_group *assoc_group; 276 277 /* The maximum total payload of reassembled request pdus */ 278 size_t max_total_request_size; 276 279 }; 277 280 -
vendor/current/source4/rpc_server/dcesrv_auth.c
r988 r989 45 45 struct dcesrv_auth *auth = &dce_conn->auth_state; 46 46 NTSTATUS status; 47 uint32_t auth_length;48 47 49 48 if (pkt->auth_length == 0) { … … 56 55 status = dcerpc_pull_auth_trailer(pkt, call, &pkt->u.bind.auth_info, 57 56 &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; 60 65 return false; 61 66 } … … 242 247 struct dcesrv_connection *dce_conn = call->conn; 243 248 NTSTATUS status; 244 uint32_t auth_length;245 249 246 250 if (pkt->auth_length == 0) { … … 258 262 259 263 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; 262 271 return false; 263 272 } … … 325 334 struct dcesrv_connection *dce_conn = call->conn; 326 335 NTSTATUS status; 327 uint32_t auth_length;328 336 329 337 /* on a pure interface change there is no auth blob */ … … 336 344 337 345 if (dce_conn->auth_state.auth_finished) { 346 call->fault_code = DCERPC_FAULT_ACCESS_DENIED; 338 347 return false; 339 348 } … … 345 354 346 355 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; 349 364 return false; 350 365 } -
vendor/current/source4/rpc_server/wkssvc/dcesrv_wkssvc.c
r988 r989 25 25 #include "librpc/gen_ndr/ndr_srvsvc.h" 26 26 #include "rpc_server/common/common.h" 27 #include "rpc_server/common/share.h"28 27 #include "param/param.h" 29 28 -
vendor/current/source4/rpc_server/wscript_build
r988 r989 2 2 3 3 bld.SAMBA_SUBSYSTEM('DCERPC_SHARE', 4 source='common/s erver_info.c common/share_info.c',4 source='common/share_info.c', 5 5 autoproto='common/share.h', 6 6 deps='ldb', 7 enabled=bld. AD_DC_BUILD_IS_ENABLED()7 enabled=bld.CONFIG_SET('WITH_NTVFS_FILESERVER'), 8 8 ) 9 9 10 10 bld.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', 12 12 autoproto='common/proto.h', 13 13 deps='ldb DCERPC_SHARE samba_server_gensec', … … 55 55 subsystem='dcerpc_server', 56 56 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') 58 59 ) 59 60 … … 89 90 init_function='dcerpc_server_winreg_init', 90 91 deps='registry ndr-standard', 91 internal_module=True 92 internal_module=True, 93 enabled=bld.CONFIG_SET('WITH_NTVFS_FILESERVER') 92 94 ) 93 95 … … 133 135 init_function='dcerpc_server_spoolss_init', 134 136 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') 136 139 ) 137 140
Note:
See TracChangeset
for help on using the changeset viewer.