diff options
author | Luke Leighton <lkcl@samba.org> | 2000-03-07 00:16:37 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 2000-03-07 00:16:37 +0000 |
commit | 8b90114159c2396229994c68dee8107778632783 (patch) | |
tree | c273ef7c82435e27ad9cb328a68cdbfae198044e | |
parent | 7177eed7d1005b9a23d45c60eaf7b75fe24b75dc (diff) | |
download | samba-8b90114159c2396229994c68dee8107778632783.tar.gz |
solving issue of cascade joining domain. it's decided that the
password set is to be an info level 0x12, due to get_usrdom_pwinfo. eh???
-rw-r--r-- | source/include/proto.h | 14 | ||||
-rw-r--r-- | source/include/rpc_parse_proto.h | 1 | ||||
-rw-r--r-- | source/include/rpc_samr.h | 9 | ||||
-rw-r--r-- | source/include/winbindd_proto.h | 1 | ||||
-rw-r--r-- | source/rpc_parse/parse_samr.c | 31 | ||||
-rw-r--r-- | source/rpc_server/srv_samr.c | 3 | ||||
-rw-r--r-- | source/samrd/srv_samr_passdb.c | 10 | ||||
-rw-r--r-- | source/samrd/srv_samr_usr_nt5ldap.c | 10 | ||||
-rw-r--r-- | source/samrd/srv_samr_usr_tdb.c | 9 |
9 files changed, 40 insertions, 48 deletions
diff --git a/source/include/proto.h b/source/include/proto.h index abac275bcb2..a84ac890921 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -3895,8 +3895,9 @@ uint32 _samr_open_domain(const POLICY_HND *connect_pol, const DOM_SID *sid, POLICY_HND *domain_pol); uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, - uint32 *unknown_0, - uint32 *unknown_1); + uint16 *unknown_0, + uint16 *unknown_1, + uint32 *unknown_2); uint32 _samr_query_sec_obj(const POLICY_HND *user_pol, SEC_DESC_BUF *buf); uint32 _samr_enum_dom_users( const POLICY_HND *pol, uint32 *start_idx, uint16 acb_mask, uint16 unk_1, uint32 size, @@ -4086,8 +4087,9 @@ BOOL pwdbsam_initialise(void); /*The following definitions come from samrd/srv_samr_usr_nt5ldap.c */ uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, - uint32 *unknown_0, - uint32 *unknown_1); + uint16 *unknown_0, + uint16 *unknown_1, + uint32 *unknown_2); uint32 _samr_query_sec_obj(const POLICY_HND *pol, SEC_DESC_BUF *buf); uint32 _samr_query_usergroups(const POLICY_HND *pol, uint32 *num_groups, @@ -4115,7 +4117,9 @@ uint32 _samr_delete_dom_user(POLICY_HND *user_pol); BOOL tdb_lookup_user(TDB_CONTEXT * tdb, SAM_USER_INFO_21 * usr); uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, - uint32 * unknown_0, uint32 * unknown_1); + uint16 * unknown_0, + uint16 *unknown_1, + uint32 * unknown_2); uint32 _samr_query_usergroups(const POLICY_HND *pol, uint32 * num_groups, DOM_GID ** gids); uint32 _samr_query_useraliases(const POLICY_HND *domain_pol, diff --git a/source/include/rpc_parse_proto.h b/source/include/rpc_parse_proto.h index 2f8e445f558..75c82792979 100644 --- a/source/include/rpc_parse_proto.h +++ b/source/include/rpc_parse_proto.h @@ -414,7 +414,6 @@ BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth); BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO *q_u, POLICY_HND *user_pol); BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_get_usrdom_pwinfo(SAMR_R_GET_USRDOM_PWINFO *q_u, uint32 status); BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs_struct *ps, int depth); BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ *q_u, const POLICY_HND *user_pol, uint32 sec_info); diff --git a/source/include/rpc_samr.h b/source/include/rpc_samr.h index e577739fb1a..6deaf5383f5 100644 --- a/source/include/rpc_samr.h +++ b/source/include/rpc_samr.h @@ -285,11 +285,11 @@ typedef struct sam_user_info_21 /* SAM_USER_INFO_12 */ typedef struct sam_user_info_12 { - uint16 acb_info; /* account control bits */ - uint8 lm_pwd[16]; /* lm user passwords */ uint8 nt_pwd[16]; /* nt user passwords */ + uint16 acb_info; /* account control bits */ + } SAM_USER_INFO_12; /* SAM_USER_INFO_11 */ @@ -376,8 +376,9 @@ SAMR_R_GET_USRDOM_PWINFO - a "set user info" occurs just after this /* SAMR_R_GET_USRDOM_PWINFO */ typedef struct r_samr_usrdom_pwinfo_info { - uint32 unknown_0; /* 0x0016 0000 */ - uint32 unknown_1; /* 0x0000 0000 */ + uint16 unknown_0; /* 0000 */ + uint16 unknown_1; /* 0x0016 or 0x0015 */ + uint32 unknown_2; /* 0x0000 0000 */ uint32 status; } SAMR_R_GET_USRDOM_PWINFO; diff --git a/source/include/winbindd_proto.h b/source/include/winbindd_proto.h index 0bce2bda6db..63e92dd3ec3 100644 --- a/source/include/winbindd_proto.h +++ b/source/include/winbindd_proto.h @@ -2105,7 +2105,6 @@ BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth); BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO *q_u, POLICY_HND *user_pol); BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO *q_u, prs_struct *ps, int depth); -BOOL make_samr_r_get_usrdom_pwinfo(SAMR_R_GET_USRDOM_PWINFO *q_u, uint32 status); BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs_struct *ps, int depth); BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ *q_u, const POLICY_HND *user_pol, uint32 sec_info); diff --git a/source/rpc_parse/parse_samr.c b/source/rpc_parse/parse_samr.c index 3f0904183eb..a07059a4e14 100644 --- a/source/rpc_parse/parse_samr.c +++ b/source/rpc_parse/parse_samr.c @@ -323,23 +323,6 @@ BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO *q_u, prs } /******************************************************************* -makes a structure. -********************************************************************/ -BOOL make_samr_r_get_usrdom_pwinfo(SAMR_R_GET_USRDOM_PWINFO *q_u, uint32 status) -{ - if (q_u == NULL) return False; - - DEBUG(5,("samr_make_r_get_usrdom_pwinfo\n")); - - q_u->unknown_0 = 0x00150000; - q_u->unknown_1 = 0x00000000; - q_u->status = status; - - return True; -} - - -/******************************************************************* reads or writes a structure. ********************************************************************/ BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs_struct *ps, int depth) @@ -351,8 +334,9 @@ BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs prs_align(ps); - prs_uint32("unknown_0", ps, depth, &(r_u->unknown_0)); - prs_uint32("unknown_1", ps, depth, &(r_u->unknown_1)); + prs_uint16("unknown_0", ps, depth, &(r_u->unknown_0)); + prs_uint16("unknown_1", ps, depth, &(r_u->unknown_1)); + prs_uint32("unknown_2", ps, depth, &(r_u->unknown_2)); prs_uint32("status ", ps, depth, &(r_u->status )); return True; @@ -4666,21 +4650,18 @@ BOOL sam_io_user_info12(char *desc, SAM_USER_INFO_12 *u, prs_struct *ps, int de DEBUG(0,("possible security breach!\n")); - return False; -#if 0 prs_debug(ps, depth, desc, "samr_io_r_user_info12"); depth++; prs_align(ps); - prs_uint16("acb_info", ps, depth, &u->acb_info); - prs_align(ps); - prs_uint8s(False, "lm_pwd", ps, depth, u->lm_pwd, sizeof(u->lm_pwd)); prs_uint8s(False, "nt_pwd", ps, depth, u->nt_pwd, sizeof(u->nt_pwd)); + prs_uint16("acb_info", ps, depth, &u->acb_info); + prs_align(ps); + return True; -#endif } /******************************************************************* diff --git a/source/rpc_server/srv_samr.c b/source/rpc_server/srv_samr.c index 23553722cf8..25a7c77b6e3 100644 --- a/source/rpc_server/srv_samr.c +++ b/source/rpc_server/srv_samr.c @@ -94,7 +94,8 @@ static BOOL api_samr_get_usrdom_pwinfo( rpcsrv_struct *p, prs_struct *data, prs_ r_u.status = _samr_get_usrdom_pwinfo(&q_u.user_pol, - &r_u.unknown_0, &r_u.unknown_1); + &r_u.unknown_0, &r_u.unknown_1, + &r_u.unknown_2); return samr_io_r_get_usrdom_pwinfo("", &r_u, rdata, 0); } diff --git a/source/samrd/srv_samr_passdb.c b/source/samrd/srv_samr_passdb.c index 5359d2895eb..a88c91b02e2 100644 --- a/source/samrd/srv_samr_passdb.c +++ b/source/samrd/srv_samr_passdb.c @@ -257,8 +257,9 @@ uint32 _samr_open_domain(const POLICY_HND *connect_pol, samr_reply_get_usrdom_pwinfo ********************************************************************/ uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, - uint32 *unknown_0, - uint32 *unknown_1) + uint16 *unknown_0, + uint16 *unknown_1, + uint32 *unknown_2) { uint32 rid; DOM_SID sid; @@ -271,8 +272,9 @@ uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, sid_split_rid(&sid, &rid); - *unknown_0 = 0x00150000; - *unknown_1 = 0x00000000; + *unknown_0 = 0x0000; + *unknown_1 = 0x0015; + *unknown_2 = 0x00000000; DEBUG(5,("samr_get_usrdom_pwinfo: %d\n", __LINE__)); diff --git a/source/samrd/srv_samr_usr_nt5ldap.c b/source/samrd/srv_samr_usr_nt5ldap.c index e6cecb6a921..390d92baa8c 100644 --- a/source/samrd/srv_samr_usr_nt5ldap.c +++ b/source/samrd/srv_samr_usr_nt5ldap.c @@ -159,8 +159,9 @@ static BOOL nt5ldap_set_userinfo_23(LDAPDB *hds, uint32 rid, samr_reply_get_usrdom_pwinfo ********************************************************************/ uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, - uint32 *unknown_0, - uint32 *unknown_1) + uint16 *unknown_0, + uint16 *unknown_1, + uint32 *unknown_2) { uint32 rid; LDAPDB *hds = NULL; @@ -171,8 +172,9 @@ uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, return NT_STATUS_INVALID_HANDLE; } - *unknown_0 = 0x00150000; - *unknown_1 = 0x00000000; + *unknown_0 = 0x0000; + *unknown_1 = 0x0015; + *unknown_2 = 0x00000000; DEBUG(5,("samr_get_usrdom_pwinfo: %d\n", __LINE__)); diff --git a/source/samrd/srv_samr_usr_tdb.c b/source/samrd/srv_samr_usr_tdb.c index 4a4a942cc09..7c0ead27112 100644 --- a/source/samrd/srv_samr_usr_tdb.c +++ b/source/samrd/srv_samr_usr_tdb.c @@ -365,7 +365,9 @@ static BOOL tdb_set_userinfo_23(TDB_CONTEXT * tdb, samr_reply_get_usrdom_pwinfo ********************************************************************/ uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, - uint32 * unknown_0, uint32 * unknown_1) + uint16 * unknown_0, + uint16 *unknown_1, + uint32 * unknown_2) { uint32 rid; TDB_CONTEXT *tdb = NULL; @@ -377,8 +379,9 @@ uint32 _samr_get_usrdom_pwinfo(const POLICY_HND *user_pol, return NT_STATUS_INVALID_HANDLE; } - *unknown_0 = 0x00150000; - *unknown_1 = 0x00000000; + *unknown_0 = 0x0000; + *unknown_1 = 0x1515; + *unknown_2 = 0x00000000; DEBUG(5, ("samr_get_usrdom_pwinfo: %d\n", __LINE__)); |