diff options
author | Luke Leighton <lkcl@samba.org> | 2000-01-27 02:21:15 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 2000-01-27 02:21:15 +0000 |
commit | e4ee437d11970614b436a0a06b1816ee952d5cda (patch) | |
tree | e069bbb96d17d41bfe33dc938741fb51dcb747df | |
parent | cab31465bf94877a6ac49106de7f51806fb07a4f (diff) | |
download | samba-e4ee437d11970614b436a0a06b1816ee952d5cda.tar.gz samba-e4ee437d11970614b436a0a06b1816ee952d5cda.tar.xz samba-e4ee437d11970614b436a0a06b1816ee952d5cda.zip |
s.striker@striker.nl's _samr_lookup_domain() samr conversion.
-rw-r--r-- | source/include/proto.h | 6 | ||||
-rw-r--r-- | source/rpc_parse/parse_samr.c | 21 | ||||
-rw-r--r-- | source/samrd/srv_samr_passdb.c | 74 |
3 files changed, 66 insertions, 35 deletions
diff --git a/source/include/proto.h b/source/include/proto.h index 88b3bcebcc2..9f1e2cdfbe0 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -3119,6 +3119,8 @@ BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND *r_u, prs_struct *ps, int BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN *q_u, POLICY_HND *pol, const char *dom_name); BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN *q_u, prs_struct *ps, int depth); +BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN *r_u, + DOM_SID *dom_sid, uint32 status); BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN *r_u, prs_struct *ps, int depth); BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN *q_u, const POLICY_HND *connect_pol, uint32 flags, @@ -4342,8 +4344,8 @@ uint32 _samr_open_alias(SAMR_Q_OPEN_ALIAS *q_u, prs_struct *rdata); uint32 _samr_open_group(SAMR_Q_OPEN_GROUP *q_u, prs_struct *rdata); -uint32 _samr_lookup_domain(SAMR_Q_LOOKUP_DOMAIN *q_u, - prs_struct *rdata); +uint32 _samr_lookup_domain(POLICY_HND *connect_pol, UNISTR2 *uni_domain, + DOM_SID *dom_sid); /*The following definitions come from smbd/blocking.c */ diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c index c61d928b963..6a045fbb971 100644 --- a/source/rpc_parse/parse_samr.c +++ b/source/rpc_parse/parse_samr.c @@ -123,6 +123,27 @@ BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN *q_u, prs_struct * } /******************************************************************* +makes a SAMR_R_LOOKUP_DOMAIN structure. +********************************************************************/ +BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN *r_u, + DOM_SID *dom_sid, uint32 status) +{ + if (r_u == NULL) return False; + + DEBUG(5,("make_samr_r_lookup_domain\n")); + + r_u->status = status; + r_u->ptr_sid = 0; + if (status == 0x0) + { + r_u->ptr_sid = 1; + make_dom_sid2(&(r_u->dom_sid), dom_sid); + } + + return True; +} + +/******************************************************************* reads or writes a structure. ********************************************************************/ BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN *r_u, prs_struct *ps, int depth) diff --git a/source/samrd/srv_samr_passdb.c b/source/samrd/srv_samr_passdb.c index d30dd20ee04..a634369642b 100644 --- a/source/samrd/srv_samr_passdb.c +++ b/source/samrd/srv_samr_passdb.c @@ -2470,6 +2470,11 @@ uint32 _samr_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO *q_u, /******************************************************************* samr_reply_create_user ********************************************************************/ +/* + uint32 samr_create_dom_user( POLICY_HND *domain_pol, const char *acct_name, + uint32 unk_0, uint32 unk_1, + POLICY_HND *user_pol, uint32 *rid); +*/ uint32 _samr_create_user(SAMR_Q_CREATE_USER *q_u, prs_struct *rdata) { @@ -2567,6 +2572,9 @@ uint32 _samr_create_user(SAMR_Q_CREATE_USER *q_u, /******************************************************************* samr_reply_connect_anon ********************************************************************/ +/* +?? +*/ uint32 _samr_connect_anon(SAMR_Q_CONNECT_ANON *q_u, prs_struct *rdata) { @@ -2607,6 +2615,10 @@ uint32 _samr_connect_anon(SAMR_Q_CONNECT_ANON *q_u, /******************************************************************* samr_reply_connect ********************************************************************/ +/* + BOOL samr_connect( const char *srv_name, uint32 unknown_0, + POLICY_HND *connect_pol); +*/ uint32 _samr_connect(SAMR_Q_CONNECT *q_u, prs_struct *rdata) { @@ -2647,6 +2659,11 @@ uint32 _samr_connect(SAMR_Q_CONNECT *q_u, /******************************************************************* samr_reply_open_alias ********************************************************************/ +/* + BOOL samr_open_alias( const POLICY_HND *domain_pol, + uint32 flags, uint32 rid, + POLICY_HND *alias_pol); +*/ uint32 _samr_open_alias(SAMR_Q_OPEN_ALIAS *q_u, prs_struct *rdata) { @@ -2746,53 +2763,44 @@ uint32 _samr_open_group(SAMR_Q_OPEN_GROUP *q_u, /* XXXX now do a make proto; make samrd/srv_samr_passdb.c, and go to rpc_server/srv_samr.c */ +#endif /******************************************************************* - samr_reply_lookup_domain - ********************************************************************/ -uint32 _samr_lookup_domain(SAMR_Q_LOOKUP_DOMAIN *q_u, - prs_struct *rdata) +samr_lookup_domain +********************************************************************/ +uint32 _samr_lookup_domain(const POLICY_HND *connect_pol, + const UNISTR2 *uni_domain, + DOM_SID *dom_sid) { - SAMR_R_LOOKUP_DOMAIN r_u; fstring domain; DEBUG(5,("samr_lookup_domain: %d\n", __LINE__)); - ptr_sid = 0; - status = 0x0; - /* find the connection policy handle */ - if (find_policy_by_hnd(get_global_hnd_cache(), &(connect_pol)) == -1) + if (find_policy_by_hnd(get_global_hnd_cache(), connect_pol) == -1) { - status = NT_STATUS_INVALID_HANDLE; + return 0xC0000000 | NT_STATUS_INVALID_HANDLE; } - if (status == 0x0) - { - unistr2_to_ascii(domain, &(uni_domain), sizeof(domain)); - DEBUG(5, ("Lookup Domain: %s\n", domain)); + unistr2_to_ascii(domain, uni_domain, sizeof(domain)); + DEBUG(5, ("Lookup Domain: %s\n", domain)); - /* check it's one of ours */ - if (strequal(domain, global_sam_name)) - { - make_dom_sid2(&(dom_sid), &global_sam_sid); - ptr_sid = 1; - } - else if (strequal(domain, "BUILTIN")) - { - make_dom_sid2(&(dom_sid), &global_sid_S_1_5_20); - ptr_sid = 1; - } - else - { - status = NT_STATUS_NO_SUCH_DOMAIN; - } + /* check it's one of ours */ + if (strequal(domain, global_sam_name)) + { + sid_copy(dom_sid, &global_sam_sid); + } + else if (strequal(domain, "BUILTIN")) + { + sid_copy(dom_sid, &global_sid_S_1_5_20); + } + else + { + return NT_STATUS_NO_SUCH_DOMAIN; } - - /* store the response in the SMB stream */ - samr_io_r_lookup_domain("", &r_u, rdata, 0); DEBUG(5,("samr_lookup_domain: %d\n", __LINE__)); + + return 0x0; } -#endif |