summaryrefslogtreecommitdiffstats
path: root/source/rpc_server
diff options
context:
space:
mode:
Diffstat (limited to 'source/rpc_server')
-rw-r--r--source/rpc_server/srv_dfs_nt.c6
-rw-r--r--source/rpc_server/srv_lsa_ds.c13
-rw-r--r--source/rpc_server/srv_lsa_ds_nt.c51
-rw-r--r--source/rpc_server/srv_spoolss_nt.c2
4 files changed, 34 insertions, 38 deletions
diff --git a/source/rpc_server/srv_dfs_nt.c b/source/rpc_server/srv_dfs_nt.c
index e93b0077f0c..19d1693d924 100644
--- a/source/rpc_server/srv_dfs_nt.c
+++ b/source/rpc_server/srv_dfs_nt.c
@@ -69,7 +69,7 @@ WERROR _dfs_Add(pipes_struct *p, NETDFS_Q_DFS_ADD* q_u, NETDFS_R_DFS_ADD *r_u)
pstrcat(altpath, sharename);
/* The following call can change the cwd. */
- if(get_referred_path(p->mem_ctx, dfspath, &jn, &consumedcnt, &self_ref)) {
+ if(NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, dfspath, &jn, &consumedcnt, &self_ref))) {
exists = True;
jn.referral_count += 1;
old_referral_list = jn.referral_list;
@@ -141,7 +141,7 @@ WERROR _dfs_Remove(pipes_struct *p, NETDFS_Q_DFS_REMOVE *q_u,
DEBUG(5,("init_reply_dfs_remove: Request to remove %s -> %s\\%s.\n",
dfspath, servername, sharename));
- if(!get_referred_path(p->mem_ctx, dfspath, &jn, &consumedcnt, &self_ref)) {
+ if(!NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, dfspath, &jn, &consumedcnt, &self_ref))) {
return WERR_DFS_NO_SUCH_VOL;
}
@@ -358,7 +358,7 @@ WERROR _dfs_GetInfo(pipes_struct *p, NETDFS_Q_DFS_GETINFO *q_u,
return WERR_DFS_NO_SUCH_SERVER;
/* The following call can change the cwd. */
- if(!get_referred_path(p->mem_ctx, path, &jn, &consumedcnt, &self_ref) || consumedcnt < strlen(path)) {
+ if(!NT_STATUS_IS_OK(get_referred_path(p->mem_ctx, path, &jn, &consumedcnt, &self_ref)) || consumedcnt < strlen(path)) {
vfs_ChDir(p->conn,p->conn->connectpath);
return WERR_DFS_NO_SUCH_VOL;
}
diff --git a/source/rpc_server/srv_lsa_ds.c b/source/rpc_server/srv_lsa_ds.c
index 1e75175c2cd..db741a1b64a 100644
--- a/source/rpc_server/srv_lsa_ds.c
+++ b/source/rpc_server/srv_lsa_ds.c
@@ -25,9 +25,7 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_SRV
-#if 0 /* disabled */
/*******************************************************************
- api_reg_open_entry
********************************************************************/
static BOOL api_dsrole_get_primary_dominfo(pipes_struct *p)
@@ -41,18 +39,17 @@ static BOOL api_dsrole_get_primary_dominfo(pipes_struct *p)
ZERO_STRUCT(r_u);
/* grab the request */
- if ( !ds_io_q_getprimdominfo("", data, 0, &q_u) )
+ if ( !ds_io_q_getprimdominfo("", &q_u, data, 0) )
return False;
/* construct reply. */
r_u.status = _dsrole_get_primary_dominfo( p, &q_u, &r_u );
- if ( !ds_io_r_getprimdominfo("", rdata, 0, &r_u) )
+ if ( !ds_io_r_getprimdominfo("", &r_u, rdata, 0) )
return False;
return True;
}
-#endif
/*******************************************************************
stub functions for unimplemented RPC
@@ -70,12 +67,8 @@ static BOOL api_dsrole_stub( pipes_struct *p )
array of \PIPE\lsass (new windows 2000 UUID) operations
********************************************************************/
static struct api_struct api_lsa_ds_cmds[] = {
- { "DS_NOP", DS_NOP, api_dsrole_stub }
-
-#if 0 /* disabled due to breakage with viewing domain users and groups
- on a Samba PDC from win2k clients --jerry CIFS 2003 */
+ { "DS_NOP", DS_NOP, api_dsrole_stub },
{ "DS_GETPRIMDOMINFO", DS_GETPRIMDOMINFO, api_dsrole_get_primary_dominfo }
-#endif
};
diff --git a/source/rpc_server/srv_lsa_ds_nt.c b/source/rpc_server/srv_lsa_ds_nt.c
index b410af8dedf..f387bec9b6d 100644
--- a/source/rpc_server/srv_lsa_ds_nt.c
+++ b/source/rpc_server/srv_lsa_ds_nt.c
@@ -36,7 +36,7 @@
static NTSTATUS fill_dsrole_dominfo_basic(TALLOC_CTX *ctx, DSROLE_PRIMARY_DOMAIN_INFO_BASIC **info)
{
DSROLE_PRIMARY_DOMAIN_INFO_BASIC *basic;
- const char *netbios_domain;
+ const char *netbios_domain = "";
fstring dnsdomain;
DEBUG(10,("fill_dsrole_dominfo_basic: enter\n"));
@@ -46,49 +46,54 @@ static NTSTATUS fill_dsrole_dominfo_basic(TALLOC_CTX *ctx, DSROLE_PRIMARY_DOMAIN
return NT_STATUS_NO_MEMORY;
}
- get_mydnsdomname(dnsdomain);
- strlower_m(dnsdomain);
-
switch ( lp_server_role() ) {
case ROLE_STANDALONE:
basic->machine_role = DSROLE_STANDALONE_SRV;
+ basic->netbios_ptr = 1;
+ netbios_domain = get_global_sam_name();
break;
case ROLE_DOMAIN_MEMBER:
+ basic->netbios_ptr = 1;
+ netbios_domain = lp_workgroup();
basic->machine_role = DSROLE_DOMAIN_MEMBER_SRV;
break;
case ROLE_DOMAIN_BDC:
+ basic->netbios_ptr = 1;
+ netbios_domain = get_global_sam_name();
basic->machine_role = DSROLE_BDC;
- basic->flags = DSROLE_PRIMARY_DS_RUNNING|DSROLE_PRIMARY_DS_MIXED_MODE;
- if ( secrets_fetch_domain_guid( lp_workgroup(), &basic->domain_guid ) )
- basic->flags |= DSROLE_PRIMARY_DOMAIN_GUID_PRESENT;
break;
case ROLE_DOMAIN_PDC:
+ basic->netbios_ptr = 1;
+ netbios_domain = get_global_sam_name();
basic->machine_role = DSROLE_PDC;
- basic->flags = DSROLE_PRIMARY_DS_RUNNING|DSROLE_PRIMARY_DS_MIXED_MODE;
- if ( secrets_fetch_domain_guid( lp_workgroup(), &basic->domain_guid ) )
- basic->flags |= DSROLE_PRIMARY_DOMAIN_GUID_PRESENT;
break;
}
- basic->unknown = 0x6173; /* seen on the wire; maybe padding */
-
/* always set netbios name */
- basic->netbios_ptr = 1;
- netbios_domain = get_global_sam_name();
- init_unistr2( &basic->netbios_domain, netbios_domain, UNI_FLAGS_NONE);
+ init_unistr2( &basic->netbios_domain, netbios_domain, UNI_STR_TERMINATE);
- basic->dnsname_ptr = 1;
- init_unistr2( &basic->dns_domain, dnsdomain, UNI_FLAGS_NONE);
- basic->forestname_ptr = 1;
- init_unistr2( &basic->forest_domain, dnsdomain, UNI_FLAGS_NONE);
-
+ if ( secrets_fetch_domain_guid( lp_workgroup(), &basic->domain_guid ) )
+ basic->flags |= DSROLE_PRIMARY_DOMAIN_GUID_PRESENT;
/* fill in some additional fields if we are a member of an AD domain */
- if ( lp_security() == SEC_ADS ) {
- /* TODO */
- ;;
+ if ( lp_security() == SEC_ADS ) {
+ fstrcpy( dnsdomain, lp_realm() );
+ strlower_m( dnsdomain );
+
+ basic->dnsname_ptr = 1;
+ init_unistr2( &basic->dns_domain, dnsdomain, UNI_STR_TERMINATE);
+ basic->forestname_ptr = 1;
+ init_unistr2( &basic->forest_domain, dnsdomain, UNI_STR_TERMINATE);
+ } else {
+ get_mydnsdomname(dnsdomain);
+ strlower_m(dnsdomain);
+
+ basic->dnsname_ptr = 1;
+ init_unistr2( &basic->dns_domain, dnsdomain, UNI_FLAGS_NONE);
+ basic->forestname_ptr = 1;
+ init_unistr2( &basic->forest_domain, dnsdomain, UNI_FLAGS_NONE);
}
*info = basic;
diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c
index 33bfaa6cc84..6b6306337cc 100644
--- a/source/rpc_server/srv_spoolss_nt.c
+++ b/source/rpc_server/srv_spoolss_nt.c
@@ -4208,8 +4208,6 @@ static BOOL construct_printer_info_3(Printer_entry *print_hnd, PRINTER_INFO_3 **
/* These are the components of the SD we are returning. */
- printer->flags = 0x4;
-
if (ntprinter->info_2->secdesc_buf && ntprinter->info_2->secdesc_buf->len != 0) {
/* don't use talloc_steal() here unless you do a deep steal of all
the SEC_DESC members */