diff options
Diffstat (limited to 'source4/rpc_server')
-rw-r--r-- | source4/rpc_server/drsuapi/updaterefs.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source4/rpc_server/drsuapi/updaterefs.c b/source4/rpc_server/drsuapi/updaterefs.c index e82ae48f3c..3cea1c47e3 100644 --- a/source4/rpc_server/drsuapi/updaterefs.c +++ b/source4/rpc_server/drsuapi/updaterefs.c @@ -137,6 +137,22 @@ WERROR drsuapi_UpdateRefs(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ct req->options, drs_ObjectIdentifier_to_string(mem_ctx, req->naming_context))); + /* + * 4.1.26.2 Server Behavior of the IDL_DRSUpdateRefs Method + * Implements the input validation checks + */ + if (GUID_all_zero(&req->dest_dsa_guid)) { + return WERR_DS_DRA_INVALID_PARAMETER; + } + + if (req->dest_dsa_dns_name == NULL) { + return WERR_DS_DRA_INVALID_PARAMETER; + } + + if (!(req->options & (DRSUAPI_DRS_DEL_REF|DRSUAPI_DRS_ADD_REF))) { + return WERR_DS_DRA_INVALID_PARAMETER; + } + dn = drs_ObjectIdentifier_to_dn(mem_ctx, sam_ctx, req->naming_context); W_ERROR_HAVE_NO_MEMORY(dn); ret = dsdb_find_nc_root(sam_ctx, dn, dn, &nc_root); |