summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/util.c11
-rw-r--r--source3/libsmb/clientgen.c6
-rw-r--r--source3/rpc_client/cli_connect.c2
-rw-r--r--source3/utils/smbpasswd.c2
4 files changed, 16 insertions, 5 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 9a9f87d473..65908ff19e 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -3234,11 +3234,18 @@ char *get_trusted_serverlist(const char* domain)
static char *server_list = NULL;
static pstring srv_list;
char *trusted_list = lp_trusted_domains();
+ int my_role = lp_server_role();
if (strequal(lp_workgroup(), domain))
{
- DEBUG(10,("local domain server list: %s\n", server_list));
- pstrcpy(srv_list, lp_passwordserver());
+ if ((my_role == ROLE_DOMAIN_PDC) || (my_role == ROLE_DOMAIN_NONE)) {
+ pstrcpy(srv_list,global_myname);
+ }
+ /* we must be a BDC or MEMBER if we execute this branch */
+ else {
+ pstrcpy(srv_list, lp_passwordserver());
+ }
+ DEBUG(10,("local domain server list: %s\n", srv_list));
return srv_list;
}
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 49772cd37a..50bf54d02c 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -1337,7 +1337,9 @@ int cli_nt_create(struct cli_state *cli, const char *fname)
pstrcpy(p,fname);
p = skip_string(p,1);
- cli_send_smb(cli, True);
+ if (!cli_send_smb(cli, True)) {
+ return -1;
+ }
if (!cli_receive_smb(cli)) {
return -1;
}
@@ -2945,7 +2947,7 @@ static int cli_init_redirect(struct cli_state *cli,
if (strequal(srv_name, "*SMBSERVER"))
{
fstrcpy(ip_name, "\\\\");
- inet_aton(&ip_name[2], destip);
+ destip->s_addr = inet_addr(&ip_name[2]);
srv_name = ip_name;
}
diff --git a/source3/rpc_client/cli_connect.c b/source3/rpc_client/cli_connect.c
index f935b53044..fcca3e44ff 100644
--- a/source3/rpc_client/cli_connect.c
+++ b/source3/rpc_client/cli_connect.c
@@ -96,7 +96,7 @@ static struct cli_connection *cli_con_get(const char* srv_name,
con->pipe_name = strdup(pipe_name);
}
- con->cli = cli_net_use_add(srv_name, usr_creds, True, reuse);
+ con->cli = cli_net_use_add(srv_name, usr_creds, False, reuse);
if (con->cli == NULL)
{
diff --git a/source3/utils/smbpasswd.c b/source3/utils/smbpasswd.c
index 3b87687c26..a1a870a674 100644
--- a/source3/utils/smbpasswd.c
+++ b/source3/utils/smbpasswd.c
@@ -794,6 +794,8 @@ int main(int argc, char **argv)
load_interfaces();
+ init_policy_hnd(64);
+
if(!pwdb_initialise(False))
{
fprintf(stderr, "Can't setup password database vectors.\n");