summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2003-04-29 05:30:29 +0000
committerGerald Carter <jerry@samba.org>2003-04-29 05:30:29 +0000
commit2aa8a05f336781d7cc7c8cdce9533f96ba9ca8d6 (patch)
tree73343023dab2e68a225a9c63e2e12b3cbef5ae32
parent6760896739914c292a056a9de5ed83fb111b3a66 (diff)
downloadsamba-2aa8a05f336781d7cc7c8cdce9533f96ba9ca8d6.tar.gz
samba-2aa8a05f336781d7cc7c8cdce9533f96ba9ca8d6.tar.bz2
samba-2aa8a05f336781d7cc7c8cdce9533f96ba9ca8d6.zip
only call the add_script if the getpwnam_alloc() fails
(This used to be commit c0807e21999ec718d722fc0be6b3353c9369db04)
-rw-r--r--source3/rpc_server/srv_samr_nt.c47
1 files changed, 28 insertions, 19 deletions
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index d6441fd361..8ff993d8a6 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -2274,26 +2274,35 @@ NTSTATUS _api_samr_create_user(pipes_struct *p, SAMR_Q_CREATE_USER *q_u, SAMR_R_
}
#endif
- /*
- * we can't check both the ending $ and the acb_info.
- *
- * UserManager creates trust accounts (ending in $,
- * normal that hidden accounts) with the acb_info equals to ACB_NORMAL.
- * JFM, 11/29/2001
- */
- if (account[strlen(account)-1] == '$')
- pstrcpy(add_script, lp_addmachine_script());
- else
- pstrcpy(add_script, lp_adduser_script());
-
- if (*add_script) {
- int add_ret;
- all_string_sub(add_script, "%u", account, sizeof(account));
- add_ret = smbrun(add_script,NULL);
- DEBUG(3,("_api_samr_create_user: Running the command `%s' gave %d\n", add_script, add_ret));
- }
-
+ /* the passdb lookup has failed; check to see if we need to run the
+ add user/machine script */
+
pw = getpwnam_alloc(account);
+
+ if ( !pw ) {
+ /*
+ * we can't check both the ending $ and the acb_info.
+ *
+ * UserManager creates trust accounts (ending in $,
+ * normal that hidden accounts) with the acb_info equals to ACB_NORMAL.
+ * JFM, 11/29/2001
+ */
+ if (account[strlen(account)-1] == '$')
+ pstrcpy(add_script, lp_addmachine_script());
+ else
+ pstrcpy(add_script, lp_adduser_script());
+
+ if (*add_script) {
+ int add_ret;
+ all_string_sub(add_script, "%u", account, sizeof(account));
+ add_ret = smbrun(add_script,NULL);
+ DEBUG(3,("_api_samr_create_user: Running the command `%s' gave %d\n", add_script, add_ret));
+ }
+
+ /* try again */
+ pw = getpwnam_alloc(account);
+ }
+
if (pw) {
nt_status = pdb_init_sam_pw(&sam_pass, pw);