svn commit: samba r6414 - in branches/SAMBA_4_0/source: include libnet
Author: mimir Date: 2005-04-21 07:24:16 + (Thu, 21 Apr 2005) New Revision: 6414 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6414 Log: Added composite user del function. Slightly broken still, but I don't want it to hang around not commited. rafal Modified: branches/SAMBA_4_0/source/include/structs.h branches/SAMBA_4_0/source/libnet/composite.h branches/SAMBA_4_0/source/libnet/userman.c Changeset: Modified: branches/SAMBA_4_0/source/include/structs.h === --- branches/SAMBA_4_0/source/include/structs.h 2005-04-21 05:47:02 UTC (rev 6413) +++ branches/SAMBA_4_0/source/include/structs.h 2005-04-21 07:24:16 UTC (rev 6414) @@ -162,6 +162,7 @@ struct smb_composite_fsinfo; struct rpc_composite_userinfo; struct rpc_composite_useradd; +struct rpc_composite_userdel; struct nbt_name; struct nbt_name_packet; Modified: branches/SAMBA_4_0/source/libnet/composite.h === --- branches/SAMBA_4_0/source/libnet/composite.h2005-04-21 05:47:02 UTC (rev 6413) +++ branches/SAMBA_4_0/source/libnet/composite.h2005-04-21 07:24:16 UTC (rev 6414) @@ -43,3 +43,14 @@ struct policy_handle user_handle; } out; }; + + +struct rpc_composite_userdel { + struct { + struct policy_handle domain_handle; + const char *username; + } in; + struct { + struct policy_handle user_handle; + } out; +}; Modified: branches/SAMBA_4_0/source/libnet/userman.c === --- branches/SAMBA_4_0/source/libnet/userman.c 2005-04-21 05:47:02 UTC (rev 6413) +++ branches/SAMBA_4_0/source/libnet/userman.c 2005-04-21 07:24:16 UTC (rev 6414) @@ -28,8 +28,12 @@ #include librpc/gen_ndr/ndr_samr.h #include libnet/composite.h -static void useradd_handler(struct rpc_request *req); +/* + * Composite user add function + */ +static void useradd_handler(struct rpc_request*); + enum useradd_stage { USERADD_CREATE }; struct useradd_state { @@ -178,3 +182,184 @@ struct composite_context *c = rpc_composite_useradd_send(pipe, io); return rpc_composite_useradd_recv(c, mem_ctx, io); } + + +/* + * Composite user del function + */ + +static void userdel_handler(struct rpc_request*); + +enum userdel_stage { USERDEL_LOOKUP, USERDEL_OPEN, USERDEL_DELETE }; + +struct userdel_state { + enum userdel_stagestage; + struct dcerpc_pipe*pipe; + struct rpc_request*req; + struct policy_handle domain_handle; + struct policy_handle user_handle; + struct samr_LookupNames lookupname; + struct samr_OpenUser openuser; + struct samr_DeleteUserdeleteuser; +}; + + +static NTSTATUS userdel_lookup(struct composite_context *c, + struct userdel_state *s) +{ + NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + + c-status = dcerpc_ndr_request_recv(s-req); + NT_STATUS_NOT_OK_RETURN(c-status); + + if (!s-lookupname.out.rids.count) { + /* TODO: no such user */ + status = NT_STATUS_NO_SUCH_USER; + + } else if (!s-lookupname.out.rids.count 1) { + /* TODO: ambiguous username */ + status = NT_STATUS_INVALID_ACCOUNT_NAME; + } + + s-openuser.in.domain_handle = s-domain_handle; + s-openuser.in.rid = s-lookupname.out.rids.ids[0]; + s-openuser.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; + s-openuser.out.user_handle = s-user_handle; + + s-req = dcerpc_samr_OpenUser_send(s-pipe, c, s-openuser); + + s-req-async.callback = userdel_handler; + s-req-async.private = c; + s-stage = USERDEL_OPEN; + + return NT_STATUS_OK; +failure: + talloc_free(c); + return status; +} + + +static NTSTATUS userdel_open(struct composite_context *c, +struct userdel_state *s) +{ + NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + + c-status = dcerpc_ndr_request_recv(s-req); + NT_STATUS_NOT_OK_RETURN(c-status); + + s-deleteuser.in.user_handle = s-user_handle; + s-deleteuser.out.user_handle = s-user_handle; + + s-req = dcerpc_samr_DeleteUser_send(s-pipe, c, s-deleteuser); + + s-req-async.callback = userdel_handler; + s-req-async.private = c; + s-stage = USERDEL_DELETE; + + return NT_STATUS_OK; +} + + +static NTSTATUS userdel_delete(struct composite_context *c, + struct userdel_state *s) +{ + NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + + c-status = dcerpc_ndr_request_recv(s-req); + NT_STATUS_NOT_OK_RETURN(c-status); + + c-state = SMBCLI_REQUEST_DONE; + + return NT_STATUS_OK; +} + +
svn commit: samba r6415 - in branches/SAMBA_4_0/source/torture: . libnet
Author: mimir Date: 2005-04-21 07:25:16 + (Thu, 21 Apr 2005) New Revision: 6415 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6415 Log: Added NET-USERDEL torture test which proves something's wrong with user del function. rafal Modified: branches/SAMBA_4_0/source/torture/libnet/userman.c branches/SAMBA_4_0/source/torture/torture.c Changeset: Modified: branches/SAMBA_4_0/source/torture/libnet/userman.c === --- branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-21 07:24:16 UTC (rev 6414) +++ branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-21 07:25:16 UTC (rev 6415) @@ -153,6 +153,55 @@ } +static BOOL test_createuser(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, + struct policy_handle *handle, const char* user) +{ + NTSTATUS status; + struct policy_handle h, domain_handle, user_handle; + struct samr_String username; + struct samr_CreateUser r4; + uint32_t user_rid; + + username.string = user; + + r4.in.domain_handle = handle; + r4.in.account_name = username; + r4.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; + r4.out.user_handle = user_handle; + r4.out.rid = user_rid; + + printf(creating user '%s'\n, username.string); + + status = dcerpc_samr_CreateUser(p, mem_ctx, r4); + if (!NT_STATUS_IS_OK(status)) { + printf(CreateUser failed - %s\n, nt_errstr(status)); + return False; + } + + return True; +} + + +static BOOL test_userdel(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, +struct policy_handle *handle, const char *username) +{ + NTSTATUS status; + BOOL ret = False; + struct rpc_composite_userdel user; + + user.in.domain_handle = *handle; + user.in.username = username; + + status = rpc_composite_userdel(p, mem_ctx, user); + if (!NT_STATUS_IS_OK(status)) { + printf(Failed to call sync rpc_composite_userdel - %s\n, nt_errstr(status)); + return False; + } + + return True; +} + + BOOL torture_useradd(void) { NTSTATUS status; @@ -206,3 +255,58 @@ talloc_free(mem_ctx); return ret; } + + +BOOL torture_userdel(void) +{ + NTSTATUS status; + const char *binding; + struct dcerpc_pipe *p; + struct dcerpc_binding *b; + struct policy_handle h; + struct samr_String domain_name; + char* name = TEST_USERNAME; + TALLOC_CTX *mem_ctx; + BOOL ret = True; + + mem_ctx = talloc_init(test_userdel); + binding = lp_parm_string(-1, torture, binding); + + status = torture_rpc_connection(mem_ctx, + p, + DCERPC_SAMR_NAME, + DCERPC_SAMR_UUID, + DCERPC_SAMR_VERSION); + + if (!NT_STATUS_IS_OK(status)) { + return False; + } + + status = dcerpc_parse_binding(mem_ctx, binding, b); + if (!NT_STATUS_IS_OK(status)) { + printf(failed to parse dcerpc binding '%s'\n, binding); + talloc_free(mem_ctx); + ret = False; + goto done; + } + + domain_name.string = lp_workgroup(); + if (!test_opendomain(p, mem_ctx, h, domain_name)) { + ret = False; + goto done; + } + + if (!test_createuser(p, mem_ctx, h, name)) { + ret = False; + goto done; + } + + if (!test_userdel(p, mem_ctx, h, name)) { + ret = False; + goto done; + } + +done: + talloc_free(mem_ctx); + return ret; +} Modified: branches/SAMBA_4_0/source/torture/torture.c === --- branches/SAMBA_4_0/source/torture/torture.c 2005-04-21 07:24:16 UTC (rev 6414) +++ branches/SAMBA_4_0/source/torture/torture.c 2005-04-21 07:25:16 UTC (rev 6415) @@ -2420,6 +2420,7 @@ /* libnet tests */ {NET-USERINFO, torture_userinfo, 0}, {NET-USERADD, torture_useradd, 0}, + {NET-USERDEL, torture_userdel, 0}, {NULL, NULL, 0}};
svn commit: samba r6416 - in trunk/source/smbd: .
Author: jra Date: 2005-04-21 07:57:41 + (Thu, 21 Apr 2005) New Revision: 6416 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6416 Log: Strange old IRIX systems return -1 for telldir() when end of directory reached. Don't check for that and bail when reading directory entries as it's a valid value. Excellent work from Cale Fairchild [EMAIL PROTECTED] tracked this down. Jeremy. Modified: trunk/source/smbd/dir.c Changeset: Modified: trunk/source/smbd/dir.c === --- trunk/source/smbd/dir.c 2005-04-21 07:25:16 UTC (rev 6415) +++ trunk/source/smbd/dir.c 2005-04-21 07:57:41 UTC (rev 6416) @@ -1038,9 +1038,6 @@ while ((n = vfs_readdirname(conn, dirp-dir))) { struct name_cache_entry *e; dirp-offset = SMB_VFS_TELLDIR(conn, dirp-dir); - if (dirp-offset == -1) { - return NULL; - } dirp-name_cache_index = (dirp-name_cache_index+1) % NAME_CACHE_SIZE; e = dirp-name_cache[dirp-name_cache_index];
svn commit: samba r6417 - in branches/SAMBA_3_0/source/smbd: .
Author: jra Date: 2005-04-21 07:57:52 + (Thu, 21 Apr 2005) New Revision: 6417 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6417 Log: Strange old IRIX systems return -1 for telldir() when end of directory reached. Don't check for that and bail when reading directory entries as it's a valid value. Excellent work from Cale Fairchild [EMAIL PROTECTED] tracked this down. Jeremy. Modified: branches/SAMBA_3_0/source/smbd/dir.c Changeset: Modified: branches/SAMBA_3_0/source/smbd/dir.c === --- branches/SAMBA_3_0/source/smbd/dir.c2005-04-21 07:57:41 UTC (rev 6416) +++ branches/SAMBA_3_0/source/smbd/dir.c2005-04-21 07:57:52 UTC (rev 6417) @@ -1038,11 +1038,7 @@ while ((n = vfs_readdirname(conn, dirp-dir))) { struct name_cache_entry *e; dirp-offset = SMB_VFS_TELLDIR(conn, dirp-dir); - if (dirp-offset == -1) { - return NULL; - } dirp-name_cache_index = (dirp-name_cache_index+1) % NAME_CACHE_SIZE; - e = dirp-name_cache[dirp-name_cache_index]; SAFE_FREE(e-name); e-name = SMB_STRDUP(n);
svn commit: samba r6418 - in branches/tmp/pidl2/source/build/pidl: .
Author: jelmer Date: 2005-04-21 08:03:38 + (Thu, 21 Apr 2005) New Revision: 6418 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6418 Log: Allow determining the prefix necessary for getting to the value of a variable Modified: branches/tmp/pidl2/source/build/pidl/ndr_parser.pm Changeset: Modified: branches/tmp/pidl2/source/build/pidl/ndr_parser.pm === --- branches/tmp/pidl2/source/build/pidl/ndr_parser.pm 2005-04-21 07:57:52 UTC (rev 6417) +++ branches/tmp/pidl2/source/build/pidl/ndr_parser.pm 2005-04-21 08:03:38 UTC (rev 6418) @@ -21,6 +21,25 @@ return $typefamily{$n}; } +sub append_prefix($$) +{ + my $e = shift; + my $var_name = shift; + my $pointers = 0; + + foreach my $l (@{$e-{LEVELS}}) { + if ($l-{TYPE} eq POINTER) { + $pointers++; + } elsif ($l-{TYPE} eq DATA) { + if ($l-{DATA_TYPE} eq string) { + return get_value_of($var_name) unless ($pointers); + } + } + } + + return $var_name; +} + # see if a variable needs to be allocated by the NDR subsystem on pull sub need_alloc($) { @@ -628,6 +647,8 @@ my $var_name = $var_prefix.$e-{NAME}; + $var_name = append_prefix($e, $var_name); + return unless $primitives or ($deferred and ContainsDeferred($e)); start_flags($e); @@ -717,6 +738,7 @@ my($var_name) = shift; my $env = shift; + $var_name = append_prefix($e, $var_name); return if (util::has_property($e, noprint)); if (my $value = util::has_property($e, value)) { @@ -886,6 +908,8 @@ my $var_name = $var_prefix.$e-{NAME}; + $var_name = append_prefix($e, $var_name); + my $previous = undef; return unless $primitives or ($deferred and ContainsDeferred($e));
svn commit: samba r6419 - in branches/SAMBA_4_0/source/libnet: .
Author: mimir Date: 2005-04-21 12:21:14 + (Thu, 21 Apr 2005) New Revision: 6419 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6419 Log: Fix strange behaviour of NET-USERDEL where account doesn't actually gets deleted. rafal Modified: branches/SAMBA_4_0/source/libnet/userman.c Changeset: Modified: branches/SAMBA_4_0/source/libnet/userman.c === --- branches/SAMBA_4_0/source/libnet/userman.c 2005-04-21 08:03:38 UTC (rev 6418) +++ branches/SAMBA_4_0/source/libnet/userman.c 2005-04-21 12:21:14 UTC (rev 6419) @@ -314,11 +314,13 @@ s = talloc_zero(c, struct userdel_state); if (s == NULL) goto failure; - s-pipe = p; c-state = SMBCLI_REQUEST_SEND; c-private= s; c-event_ctx = dcerpc_event_context(p); + s-pipe = p; + s-domain_handle = io-in.domain_handle; + s-lookupname.in.domain_handle = io-in.domain_handle; s-lookupname.in.num_names = 1; s-lookupname.in.names = talloc_zero(s, struct samr_String);
svn commit: samba r6420 - in branches/SAMBA_4_0/source/torture/libnet: .
Author: mimir Date: 2005-04-21 12:22:48 + (Thu, 21 Apr 2005) New Revision: 6420 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6420 Log: Close user account handle before calling tested function to better simulate real conditions of calling the function. rafal Modified: branches/SAMBA_4_0/source/torture/libnet/userman.c Changeset: Modified: branches/SAMBA_4_0/source/torture/libnet/userman.c === --- branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-21 12:21:14 UTC (rev 6419) +++ branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-21 12:22:48 UTC (rev 6420) @@ -159,25 +159,37 @@ NTSTATUS status; struct policy_handle h, domain_handle, user_handle; struct samr_String username; - struct samr_CreateUser r4; + struct samr_CreateUser r1; + struct samr_Close r2; uint32_t user_rid; username.string = user; - r4.in.domain_handle = handle; - r4.in.account_name = username; - r4.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; - r4.out.user_handle = user_handle; - r4.out.rid = user_rid; + r1.in.domain_handle = handle; + r1.in.account_name = username; + r1.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; + r1.out.user_handle = user_handle; + r1.out.rid = user_rid; printf(creating user '%s'\n, username.string); - status = dcerpc_samr_CreateUser(p, mem_ctx, r4); + status = dcerpc_samr_CreateUser(p, mem_ctx, r1); if (!NT_STATUS_IS_OK(status)) { printf(CreateUser failed - %s\n, nt_errstr(status)); return False; } + r2.in.handle = user_handle; + r2.out.handle = user_handle; + + printf(closing user '%s'\n, username.string); + + status = dcerpc_samr_Close(p, mem_ctx, r2); + if (!NT_STATUS_IS_OK(status)) { + printf(Close failed - %s\n, nt_errstr(status)); + return False; + } + return True; }
svn commit: samba r6421 - in branches/SAMBA_3_0/source: passdb rpc_server
Author: jerry Date: 2005-04-21 17:13:50 + (Thu, 21 Apr 2005) New Revision: 6421 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6421 Log: use add machine script when creating a user (ACB_NORMAL) who has a name ending in '$' (usrmgr.exe does this for domain trusts (that's was jfm's original comment I think). avoid an assert() call in libldap. Modified: branches/SAMBA_3_0/source/passdb/pdb_ldap.c branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c Changeset: Modified: branches/SAMBA_3_0/source/passdb/pdb_ldap.c === --- branches/SAMBA_3_0/source/passdb/pdb_ldap.c 2005-04-21 12:22:48 UTC (rev 6420) +++ branches/SAMBA_3_0/source/passdb/pdb_ldap.c 2005-04-21 17:13:50 UTC (rev 6421) @@ -3423,7 +3423,8 @@ state-connection-paged_results = False; } - state-current_entry = ldap_first_entry(ld, state-entries); + if ( ld ) + state-current_entry = ldap_first_entry(ld, state-entries); if (state-current_entry == NULL) { ldap_msgfree(state-entries); Modified: branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c === --- branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c 2005-04-21 12:22:48 UTC (rev 6420) +++ branches/SAMBA_3_0/source/rpc_server/srv_samr_nt.c 2005-04-21 17:13:50 UTC (rev 6421) @@ -1985,13 +1985,15 @@ se_priv_copy( se_rights, se_machine_account ); can_add_account = user_has_privileges( p-pipe_user.nt_user_token, se_rights ); } - else if ( acb_info ACB_NORMAL ) + /* usrmgr.exe (and net rpc trustdom grant) creates a normal user + account for domain trusts and changes the ACB flags later */ + else if ( acb_info ACB_NORMAL (account[strlen(account)-1] != '$') ) { pstrcpy(add_script, lp_adduser_script()); se_priv_copy( se_rights, se_add_users ); can_add_account = user_has_privileges( p-pipe_user.nt_user_token, se_rights ); } - else if ( acb_info (ACB_SVRTRUST|ACB_DOMTRUST) ) + else/* implicit assumption of a BDC or domain trust account here (we already check the flags earlier) */ { pstrcpy(add_script, lp_addmachine_script()); if ( lp_enable_privileges() ) {
svn commit: samba r6422 - in trunk/source: . client include passdb rpc_server tests
Author: jerry Date: 2005-04-21 18:01:37 + (Thu, 21 Apr 2005) New Revision: 6422 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6422 Log: merging changes from 3.0 Added: trunk/source/client/umount.cifs.c Modified: trunk/source/Makefile.in trunk/source/client/client.c trunk/source/include/includes.h trunk/source/include/libsmb_internal.h trunk/source/passdb/pdb_ldap.c trunk/source/rpc_server/srv_samr_nt.c trunk/source/tests/sysquotas.c Changeset: Sorry, the patch is too large (875 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6422
svn commit: samba r6423 - in trunk/source/rpc_server: .
Author: jerry Date: 2005-04-21 18:44:56 + (Thu, 21 Apr 2005) New Revision: 6423 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6423 Log: fix compile ereor from bad merge Modified: trunk/source/rpc_server/srv_samr_nt.c Changeset: Modified: trunk/source/rpc_server/srv_samr_nt.c === --- trunk/source/rpc_server/srv_samr_nt.c 2005-04-21 18:01:37 UTC (rev 6422) +++ trunk/source/rpc_server/srv_samr_nt.c 2005-04-21 18:44:56 UTC (rev 6423) @@ -501,7 +501,7 @@ /* TODO: different SDs have to be generated for aliases groups and users. Currently all three get a default user SD */ DEBUG(10,(_samr_query_sec_obj: querying security on Object with SID: %s\n, sid_to_string(str_sid, pol_sid))); - r_u-status = samr_make_usr_obj_sd(p-mem_ctx, psd,sd_size, pol_sid); + r_u-status = make_samr_object_sd(p-mem_ctx, psd, sd_size, usr_generic_mapping, pol_sid, SAMR_USR_RIGHTS_WRITE_PW); } else return NT_STATUS_OBJECT_TYPE_MISMATCH;
svn commit: samba r6424 - in branches/SAMBA_4_0/source/libnet: .
Author: mimir Date: 2005-04-21 23:25:38 + (Thu, 21 Apr 2005) New Revision: 6424 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6424 Log: More comments and fixes to existing ones. rafal Modified: branches/SAMBA_4_0/source/libnet/userman.c Changeset: Modified: branches/SAMBA_4_0/source/libnet/userman.c === --- branches/SAMBA_4_0/source/libnet/userman.c 2005-04-21 18:44:56 UTC (rev 6423) +++ branches/SAMBA_4_0/source/libnet/userman.c 2005-04-21 23:25:38 UTC (rev 6424) @@ -95,6 +95,7 @@ * @param p dce/rpc call pipe * @param io arguments and results of the call */ + struct composite_context *rpc_composite_useradd_send(struct dcerpc_pipe *p, struct rpc_composite_useradd *io) { @@ -141,7 +142,7 @@ /** * Waits for and receives result of asynchronous useradd call * - * @param c composite context returned by asynchronous userinfo call + * @param c composite context returned by asynchronous useradd call * @param mem_ctx memory context of the call * @param io pointer to results (and arguments) of the call * @return nt status code of execution @@ -185,7 +186,7 @@ /* - * Composite user del function + * Composite user delete function */ static void userdel_handler(struct rpc_request*); @@ -204,6 +205,9 @@ }; +/** + * Stage 1: Lookup the user name and resolve it to rid + */ static NTSTATUS userdel_lookup(struct composite_context *c, struct userdel_state *s) { @@ -239,6 +243,9 @@ } +/** + * Stage 2: Open user account. + */ static NTSTATUS userdel_open(struct composite_context *c, struct userdel_state *s) { @@ -260,6 +267,9 @@ } +/** + * Stage 3: Delete user account + */ static NTSTATUS userdel_delete(struct composite_context *c, struct userdel_state *s) { @@ -274,6 +284,12 @@ } +/** + * Event handler for asynchronous request. Handles transition through + * intermediate stages of the call. + * + * @param req rpc call context + */ static void userdel_handler(struct rpc_request *req) { struct composite_context *c = req-async.private; @@ -302,6 +318,13 @@ } +/** + * Sends asynchronous userdel request + * + * @param p dce/rpc call pipe + * @param io arguments and results of the call + */ + struct composite_context *rpc_composite_userdel_send(struct dcerpc_pipe *p, struct rpc_composite_userdel *io) { @@ -320,14 +343,17 @@ s-pipe = p; s-domain_handle = io-in.domain_handle; - + + /* preparing parameters to send rpc request */ s-lookupname.in.domain_handle = io-in.domain_handle; s-lookupname.in.num_names = 1; s-lookupname.in.names = talloc_zero(s, struct samr_String); s-lookupname.in.names-string = io-in.username; + /* send the request */ s-req = dcerpc_samr_LookupNames_send(p, c, s-lookupname); - + + /* callback handler */ s-req-async.callback = userdel_handler; s-req-async.private = c; s-stage = USERDEL_LOOKUP; @@ -340,6 +366,15 @@ } +/** + * Waits for and receives results of asynchronous userdel call + * + * @param c composite context returned by asynchronous userdel call + * @param mem_ctx memory context of the call + * @param io pointer to results (and arguments) of the call + * @return nt status code of execution + */ + NTSTATUS rpc_composite_userdel_recv(struct composite_context *c, TALLOC_CTX *mem_ctx, struct rpc_composite_userdel *io) {
Build status as of Fri Apr 22 00:00:02 2005
URL: http://build.samba.org/ --- /home/build/master/cache/broken_results.txt.old 2005-04-21 00:00:19.0 + +++ /home/build/master/cache/broken_results.txt 2005-04-22 00:00:35.0 + @@ -1,18 +1,19 @@ -Build status as of Thu Apr 21 00:00:02 2005 +Build status as of Fri Apr 22 00:00:02 2005 Build counts: Tree Total Broken Panic -ccache 38 4 0 -distcc 38 1 0 +ccache 39 4 0 +distcc 39 1 0 ppp 23 2 0 rsync38 1 0 samba1 1 1 samba-docs 0 0 0 -samba4 40 11 0 +samba4 41 15 0 samba_3_040 9 0 Currently broken builds: Host Tree Compiler Status +cyberone samba4 gccok/ 2/?/? fusberta samba4 gccok/ 2/?/? samba-s390 samba4 gccok/ 2/?/? rhonwynsamba4 gcc-4.0ok/ 2/?/? @@ -20,11 +21,14 @@ rhonwynsamba4 tccok/ 2/?/? shelob ccache iccok/ok/ok/ 2 aretnapccache iccok/ok/ok/ 1 +smartserv1 samba4 gcc-4.0ok/ 1/?/? smartserv1 samba_3_0gcc-4.0ok/ 1/?/? gwen distcc cc ok/ 1/?/? gwen samba4 cc ok/ 1/?/? gwen samba_3_0cc ok/ 1/?/? +us4samba4 cc ok/ 1/?/? us4samba_3_0cc ok/ 1/?/? +us4samba4 gccok/ 1/?/? us4samba_3_0gccok/ 1/?/? flock samba4 gccok/ 1/?/? shubnigurath samba4 cc ok/ 1/?/?
svn commit: samba r6425 - in branches/SAMBA_4_0/source/libnet: .
Author: mimir Date: 2005-04-22 00:22:11 + (Fri, 22 Apr 2005) New Revision: 6425 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6425 Log: Yet another comment. rafal Modified: branches/SAMBA_4_0/source/libnet/userman.c Changeset: Modified: branches/SAMBA_4_0/source/libnet/userman.c === --- branches/SAMBA_4_0/source/libnet/userman.c 2005-04-21 23:25:38 UTC (rev 6424) +++ branches/SAMBA_4_0/source/libnet/userman.c 2005-04-22 00:22:11 UTC (rev 6425) @@ -393,6 +393,15 @@ } +/** + * Synchronous version of userdel call + * + * @param pipe dce/rpc call pipe + * @param mem_ctx memory context for the call + * @param io arguments and results of the call + * @return nt status code of execution + */ + NTSTATUS rpc_composite_userdel(struct dcerpc_pipe *pipe, TALLOC_CTX *mem_ctx, struct rpc_composite_userdel *io)
svn commit: samba r6426 - in branches/SAMBA_4_0/source/torture/libnet: .
Author: mimir Date: 2005-04-22 00:32:37 + (Fri, 22 Apr 2005) New Revision: 6426 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6426 Log: DCE/RPC bind string parsing is not needed anymore, as we use lp_workgroup parameter as domain name to operate on. rafal Modified: branches/SAMBA_4_0/source/torture/libnet/userinfo.c branches/SAMBA_4_0/source/torture/libnet/userman.c Changeset: Modified: branches/SAMBA_4_0/source/torture/libnet/userinfo.c === --- branches/SAMBA_4_0/source/torture/libnet/userinfo.c 2005-04-22 00:22:11 UTC (rev 6425) +++ branches/SAMBA_4_0/source/torture/libnet/userinfo.c 2005-04-22 00:32:37 UTC (rev 6426) @@ -225,17 +225,8 @@ DCERPC_SAMR_UUID, DCERPC_SAMR_VERSION); - if (!NT_STATUS_IS_OK(status)) { - return False; - } + if (!NT_STATUS_IS_OK(status)) return False; - status = dcerpc_parse_binding(mem_ctx, binding, b); - if (!NT_STATUS_IS_OK(status)) { - printf(failed to parse dcerpc binding '%s'\n, binding); - talloc_free(mem_ctx); - ret = False; - goto done; - } name.string = lp_workgroup(); if (!test_opendomain(p, mem_ctx, h, name, sid)) { Modified: branches/SAMBA_4_0/source/torture/libnet/userman.c === --- branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-22 00:22:11 UTC (rev 6425) +++ branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-22 00:32:37 UTC (rev 6426) @@ -23,7 +23,7 @@ #include librpc/gen_ndr/ndr_samr.h #include libnet/composite.h -#define TEST_USERNAME libnetuserinfotest +#define TEST_USERNAME libnetusermantest static BOOL test_opendomain(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, @@ -235,18 +235,8 @@ DCERPC_SAMR_UUID, DCERPC_SAMR_VERSION); - if (!NT_STATUS_IS_OK(status)) { - return False; - } + if (!NT_STATUS_IS_OK(status)) return False; - status = dcerpc_parse_binding(mem_ctx, binding, b); - if (!NT_STATUS_IS_OK(status)) { - printf(failed to parse dcerpc binding '%s'\n, binding); - talloc_free(mem_ctx); - ret = False; - goto done; - } - domain_name.string = lp_workgroup(); if (!test_opendomain(p, mem_ctx, h, domain_name)) { ret = False; @@ -290,18 +280,8 @@ DCERPC_SAMR_UUID, DCERPC_SAMR_VERSION); - if (!NT_STATUS_IS_OK(status)) { - return False; - } + if (!NT_STATUS_IS_OK(status)) return False; - status = dcerpc_parse_binding(mem_ctx, binding, b); - if (!NT_STATUS_IS_OK(status)) { - printf(failed to parse dcerpc binding '%s'\n, binding); - talloc_free(mem_ctx); - ret = False; - goto done; - } - domain_name.string = lp_workgroup(); if (!test_opendomain(p, mem_ctx, h, domain_name)) { ret = False;
Re: svn commit: samba r6426 - in branches/SAMBA_4_0/source/torture/libnet: .
On Fri, 22 Apr 2005 [EMAIL PROTECTED] wrote: Author: mimir Date: 2005-04-22 00:32:37 + (Fri, 22 Apr 2005) New Revision: 6426 [deletia] Changeset: Modified: branches/SAMBA_4_0/source/torture/libnet/userinfo.c === --- branches/SAMBA_4_0/source/torture/libnet/userinfo.c 2005-04-22 00:22:11 UTC (rev 6425) +++ branches/SAMBA_4_0/source/torture/libnet/userinfo.c 2005-04-22 00:32:37 UTC (rev 6426) @@ -225,17 +225,8 @@ DCERPC_SAMR_UUID, DCERPC_SAMR_VERSION); - if (!NT_STATUS_IS_OK(status)) { - return False; - } + if (!NT_STATUS_IS_OK(status)) return False; I don't think this is a big item, but I actually prefer the first one above that was deleted, because it makes things much easier when you are inserting debugging statements and so forth, at the cost of a few more characters. Of course, I am not going to create a big fuss, though. Regards - Richard Sharpe, rsharpe[at]richardsharpe.com, rsharpe[at]samba.org, sharpe[at]ethereal.com, http://www.richardsharpe.com
svn commit: samba-docs r498 - in trunk/Samba-Guide: .
Author: jht Date: 2005-04-22 01:46:37 + (Fri, 22 Apr 2005) New Revision: 498 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=samba-docsrev=498 Log: More updates from feedback. Modified: trunk/Samba-Guide/SBE-AddingUNIXClients.xml trunk/Samba-Guide/SBE-MakingHappyUsers.xml trunk/Samba-Guide/SBE-MigrateNT4Samba3.xml trunk/Samba-Guide/SBE-MigrateNW4Samba3.xml Changeset: Sorry, the patch is too large (472 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=samba-docsrev=498
Re: svn commit: samba r6426 - in branches/SAMBA_4_0/source/torture/libnet: .
On Thu, Apr 21, 2005 at 06:20:34PM -0700, Richard Sharpe wrote: On Fri, 22 Apr 2005 [EMAIL PROTECTED] wrote: - if (!NT_STATUS_IS_OK(status)) { - return False; - } + if (!NT_STATUS_IS_OK(status)) return False; I don't think this is a big item, but I actually prefer the first one above that was deleted, because it makes things much easier when you are inserting debugging statements and so forth, at the cost of a few more characters. Certainly, when you add debug statements you use the deleted form. I changed it to single line because it is smaller. Once I put there something more it will be just what you prefer. cheers, -- Rafal Szczesniak Samba Team member http://www.samba.org signature.asc Description: Digital signature
svn commit: samba r6427 - in trunk/source: include registry utils
Author: jerry Date: 2005-04-22 02:42:09 + (Fri, 22 Apr 2005) New Revision: 6427 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6427 Log: start to give more flesh to the structure surrounding reading registry files. Connect the SK, VK, LF records to the NK parent. Modified: trunk/source/include/regfio.h trunk/source/registry/regfio.c trunk/source/utils/net_rpc_registry.c Changeset: Sorry, the patch is too large (497 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6427
svn commit: samba-docs r499 - in trunk/Samba-Guide: .
Author: jht Date: 2005-04-22 03:53:48 + (Fri, 22 Apr 2005) New Revision: 499 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=samba-docsrev=499 Log: More wonderful edits from feedback. Modified: trunk/Samba-Guide/SBE-500UserNetwork.xml trunk/Samba-Guide/SBE-AddingUNIXClients.xml trunk/Samba-Guide/SBE-Appendix1.xml trunk/Samba-Guide/SBE-DomainAppsSupport.xml trunk/Samba-Guide/SBE-HighAvailability.xml trunk/Samba-Guide/SBE-MakingHappyUsers.xml trunk/Samba-Guide/SBE-TheSmallOffice.xml trunk/Samba-Guide/SBE-preface.xml Changeset: Sorry, the patch is too large (483 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=samba-docsrev=499
svn commit: samba r6428 - in trunk/source: include registry utils
Author: jerry Date: 2005-04-22 04:12:11 + (Fri, 22 Apr 2005) New Revision: 6428 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6428 Log: successfully parse lf and vk records Modified: trunk/source/include/regfio.h trunk/source/registry/regfio.c trunk/source/utils/net_rpc_registry.c Changeset: Sorry, the patch is too large (316 lines) to include; please use WebSVN to see it! WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6428
svn commit: samba r6429 - in trunk/source: include registry
Author: jerry Date: 2005-04-22 04:25:21 + (Fri, 22 Apr 2005) New Revision: 6429 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6429 Log: fix bug that caused prs_vk_rec() to fail prematurely when the reg value data was stored in the offset Modified: trunk/source/include/regfio.h trunk/source/registry/regfio.c Changeset: Modified: trunk/source/include/regfio.h === --- trunk/source/include/regfio.h 2005-04-22 04:12:11 UTC (rev 6428) +++ trunk/source/include/regfio.h 2005-04-22 04:25:21 UTC (rev 6429) @@ -40,6 +40,7 @@ /* Flags for the vk records */ #define VK_FLAG_NAME_PRESENT 0x0001 +#define VK_DATA_IN_OFFSET 0x1000 /* ??? List -- list of key offsets and hashed names for consistency */ Modified: trunk/source/registry/regfio.c === --- trunk/source/registry/regfio.c 2005-04-22 04:12:11 UTC (rev 6428) +++ trunk/source/registry/regfio.c 2005-04-22 04:25:21 UTC (rev 6429) @@ -400,21 +400,19 @@ if ( vk-data_size != 0 ) { BOOL charmode = vk-type (REG_SZ|REG_MULTI_SZ); - if ( !(vk-data = PRS_ALLOC_MEM( ps, uint8, vk-data_size) ) ) - return False; - /* the data is stored in the offset if the size = 4 */ - if ( vk-data_size 4 ) { - /* set the offset */ - + if ( vk-data_size VK_DATA_IN_OFFSET ) { + if ( !(vk-data = PRS_ALLOC_MEM( ps, uint8, vk-data_size) ) ) + return False; if ( !(prs_set_offset( ps, vk-data_off+HBIN_HDR_SIZE )) ) return False; - if ( !prs_uint8s( charmode, data, ps, depth, vk-data, vk-data_size) ) return False; } else { + if ( !(vk-data = PRS_ALLOC_MEM( ps, uint8, 4 ) ) ) + return False; SIVAL( vk-data, 0, vk-data_off ); }
svn commit: samba r6430 - in branches/SAMBA_4_0/source/torture/libnet: .
Author: mimir Date: 2005-04-22 05:11:53 + (Fri, 22 Apr 2005) New Revision: 6430 WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=revroot=sambarev=6430 Log: Delete existing test account if, for some reason, it hasn't been deleted last time running the test. rafal Modified: branches/SAMBA_4_0/source/torture/libnet/userman.c Changeset: Modified: branches/SAMBA_4_0/source/torture/libnet/userman.c === --- branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-22 04:25:21 UTC (rev 6429) +++ branches/SAMBA_4_0/source/torture/libnet/userman.c 2005-04-22 05:11:53 UTC (rev 6430) @@ -176,6 +176,22 @@ status = dcerpc_samr_CreateUser(p, mem_ctx, r1); if (!NT_STATUS_IS_OK(status)) { printf(CreateUser failed - %s\n, nt_errstr(status)); + + if (NT_STATUS_EQUAL(status, NT_STATUS_USER_EXISTS)) { + printf(User (%s) already exists - attempting to delete and recreate account again\n, user); + if (!test_cleanup(p, mem_ctx, handle, TEST_USERNAME)) { + return False; + } + + printf(creating user account\n); + + status = dcerpc_samr_CreateUser(p, mem_ctx, r1); + if (!NT_STATUS_IS_OK(status)) { + printf(CreateUser failed - %s\n, nt_errstr(status)); + return False; + } + return True; + } return False; } @@ -292,12 +308,12 @@ ret = False; goto done; } - - if (!test_userdel(p, mem_ctx, h, name)) { + + if (!test_userdel(p, mem_ctx, h, name)) { ret = False; goto done; } - + done: talloc_free(mem_ctx); return ret;