the buffer must be greater then src string len otherwise bad things happen!
[ira/wip.git] / source3 / lib / domain_namemap.c
index 892263f08490f13b2da477bfdc30f736e420b16f..988f5e5d65907eb5580efb4a9738f1f1fb6c947f 100644 (file)
@@ -364,7 +364,7 @@ static BOOL unix_name_to_nt_name_info(DOM_NAME_MAP *map, DOM_MAP_TYPE type)
 
        if (type == DOM_MAP_USER)
        {
-               struct passwd *pwptr = Get_Pwnam(map->unix_name, False);
+               const struct passwd *pwptr = Get_Pwnam(map->unix_name, False);
                if (pwptr == NULL)
                {
                        DEBUG(0,("unix_name_to_nt_name_info: Get_Pwnam for user %s\
@@ -479,7 +479,6 @@ static ubi_slList *load_name_map(DOM_MAP_TYPE type)
        char *aliasname_map_file = lp_aliasname_map();
        char *ntusrname_map_file = lp_ntusrname_map();
 
-       SMB_STRUCT_STAT st;
        FILE *fp;
        char *s;
        pstring buf;
@@ -533,32 +532,13 @@ static ubi_slList *load_name_map(DOM_MAP_TYPE type)
                return map_list;
        }
 
-       if (sys_stat(map_file, &st) != 0)
-       {
-               DEBUG(0, ("load_name_map: Unable to stat file %s. Error was %s\n",
-                          map_file, strerror(errno) ));
-               return map_list;
-       }
-
-       /*
-        * Check if file has changed.
-        */
-       if (st.st_mtime <= (*file_last_modified))
-       {
-               return map_list;
-       }
-
-       (*file_last_modified) = st.st_mtime;
-
        /*
         * Load the file.
         */
 
-       fp = fopen(map_file,"r");
+       fp = open_file_if_modified(map_file, "r", file_last_modified);
        if (!fp)
        {
-               DEBUG(0,("load_name_map: can't open name map %s. Error was %s\n",
-                         map_file, strerror(errno)));
                return map_list;
        }
 
@@ -901,15 +881,23 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
 {
        struct cli_state cli;
        POLICY_HND lsa_pol;
-       uint16 fnum_lsa;
        fstring srv_name;
+       extern struct ntuser_creds *usr_creds;
+       struct ntuser_creds usr;
 
        BOOL res3 = True;
        BOOL res4 = True;
        uint32 num_sids;
        DOM_SID *sids;
        uint8 *types;
-       const char *names[1];
+       char *names[1];
+
+       usr_creds = &usr;
+
+       ZERO_STRUCT(usr);
+       pwd_set_nullpwd(&usr.pwd);
+
+       DEBUG(5,("lookup_remote_ntname: %s\n", ntname));
 
        if (!cli_connect_serverlist(&cli, lp_passwordserver()))
        {
@@ -922,23 +910,16 @@ static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
        fstrcat(srv_name, cli.desthost);
        strupper(srv_name);
 
-       /* open LSARPC session. */
-       res3 = res3 ? cli_nt_session_open(&cli, PIPE_LSARPC, &fnum_lsa) : False;
-
        /* lookup domain controller; receive a policy handle */
-       res3 = res3 ? lsa_open_policy(&cli, fnum_lsa,
-                               srv_name,
+       res3 = res3 ? lsa_open_policy( srv_name,
                                &lsa_pol, True) : False;
 
        /* send lsa lookup sids call */
-       res4 = res3 ? lsa_lookup_names(&cli, fnum_lsa, 
-                                      &lsa_pol,
+       res4 = res3 ? lsa_lookup_names( &lsa_pol,
                                       1, names, 
                                       &sids, &types, &num_sids) : False;
 
-       res3 = res3 ? lsa_close(&cli, fnum_lsa, &lsa_pol) : False;
-
-       cli_nt_session_close(&cli, fnum_lsa);
+       res3 = res3 ? lsa_close(&lsa_pol) : False;
 
        if (res4 && res3 && sids != NULL && types != NULL)
        {
@@ -1022,7 +1003,9 @@ BOOL lookupsmbpwuid(uid_t uid, DOM_NAME_MAP *gmep)
        {
                return True;
        }
+#if 0
        if (lp_server_role() != ROLE_DOMAIN_NONE)
+#endif
        {
                gmep->nt_name   = nt_name;
                gmep->unix_name = unix_name;