getpwnam -> getpwnam_alloc.
authorAndrew Bartlett <abartlet@samba.org>
Wed, 23 Jan 2002 12:59:24 +0000 (12:59 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 23 Jan 2002 12:59:24 +0000 (12:59 +0000)
idra has promised not to revert these this time :-)

source/lib/genrand.c
source/lib/util.c
source/passdb/pdb_ldap.c
source/passdb/pdb_nisplus.c
source/passdb/pdb_tdb.c
source/utils/pdbedit.c

index 39e56db960936c350a9eb16080aaa46ae0f5f790..4a56235c3dc3e1300f7ac1c895960cd672ec2206 100644 (file)
@@ -158,13 +158,14 @@ static int do_reseed(BOOL use_fd, int fd)
         * seriously this will be secret.
         */
 
-       pw = sys_getpwnam("root");
+       pw = getpwnam_alloc("root");
        if (pw && pw->pw_passwd) {
                size_t i;
                unsigned char md4_tmp[16];
                mdfour(md4_tmp, (unsigned char *)pw->pw_passwd, strlen(pw->pw_passwd));
                for (i=0;i<16;i++)
                        seed_inbuf[8+i] ^= md4_tmp[i];
+               passwd_free(&pw);
        }
 
        /*
index f598f0aaa46e956197a73b79d4e037a14d8cbc89..97ff4e24a0f12b0f4d5df07fd16b603c1e528aaf 100644 (file)
@@ -1091,9 +1091,11 @@ uid_t nametouid(char *name)
        if (winbind_nametouid(&u, name))
                return u;
 
-       pass = sys_getpwnam(name);
-       if (pass)
+       pass = getpwnam_alloc(name);
+       if (pass) {
                return(pass->pw_uid);
+               passwd_free(&pass);
+       }
        return (uid_t)-1;
 }
 
index 2de02d9b762442a110f9807c5a7743da2c6f69e8..b8ec37814d99ec6e8a65a783b8972633390e9dab 100644 (file)
@@ -500,7 +500,7 @@ static BOOL init_sam_from_ldap (SAM_ACCOUNT * sampass,
        /* These values MAY be in LDAP, but they can also be retrieved through 
         *  sys_getpw*() which is how we're doing it 
         */
-       pw = getpwnam(username);
+       pw = getpwnam_alloc(username);
        if (pw == NULL) {
                DEBUG (2,("init_sam_from_ldap: User [%s] does not ave a uid!\n", username));
                return False;
@@ -508,6 +508,8 @@ static BOOL init_sam_from_ldap (SAM_ACCOUNT * sampass,
        uid = pw->pw_uid;
        gid = pw->pw_gid;
 
+       passwd_free(&pw);
+
        /* FIXME: hours stuff should be cleaner */
        
        logon_divs = 168;
index 687115733a54ac305c7942fca724d76b772f3539..3659f169b83c0dea26fd4bcc82c5be5f842353ad 100644 (file)
@@ -1192,14 +1192,17 @@ BOOL pdb_add_sam_account(SAM_ACCOUNT * newpwd)
   
   if (result->status != NIS_SUCCESS || NIS_RES_NUMOBJ(result) <= 0)
     {
+      struct passwd *passwd;
       DEBUG(3, ("nis_list failure: %s: %s\n", 
                nisname,  nis_sperrno(result->status)));
       nis_freeresult(result);
 
-      if (!sys_getpwnam(pdb_get_username(newpwd))) {
+      if (!passwd = getpwnam_alloc(pdb_get_username(newpwd))) {
        /* no such user in system! */
        return False;
       }
+      passwd_free(&passwd);
+
        /* 
         * user is defined, but not in passwd.org_dir.
         */
index 30fe3dc354e1446dab3a20e1209b92485d554c7d..b1ba01fe980f36b74fe848def0085bbff5c68ae4 100644 (file)
@@ -141,14 +141,16 @@ static BOOL init_sam_from_buffer (struct tdbsam_privates *tdb_state,
                 * getpwnam() is used instead of Get_Pwnam() as we do not need
                 * to try case permutations
                 */
-               if (!username || !(pw=getpwnam(username))) {
-                       DEBUG(0,("tdb_sam: getpwnam(%s) return NULL.  User does not exist!\n", 
+               if (!username || !(pw=getpwnam_alloc(username))) {
+                       DEBUG(0,("tdb_sam: getpwnam_alloc(%s) return NULL.  User does not exist!\n", 
                                  username?username:"NULL"));
                        ret = False;
                        goto done;
                }
                uid = pw->pw_uid;
                gid = pw->pw_gid;
+               
+               passwd_free(&pw);
 
                pdb_set_uid(sampass, uid);
                pdb_set_gid(sampass, gid);
index 33b62ebd42ed6891f8b7097ed566ff6e1db97857..08ba54605fcc62ffa3e29604b94f1016e2346c50 100644 (file)
@@ -227,12 +227,17 @@ static int new_user (char *username, char *fullname, char *homedir, char *drive,
        
        ZERO_STRUCT(sam_pwent);
 
-       if (!(pwd = sys_getpwnam(username))) {
-               fprintf (stderr, "User %s does not exist in system passwd!\n", username);
-               return -1;
-       }
+       if (pwd = getpwnam_alloc(username)) {
        
-       pdb_init_sam_pw (&sam_pwent, pwd);
+               pdb_init_sam_pw (&sam_pwent, pwd);
+               passwd_free(&pwd);
+       } else {
+               fprintf (stderr, "WARNING: user %s does not exist in system passwd\n", username);
+               pdb_init_sam(&sam_pwent);
+               if (!pdb_set_username(sam_pwent, username)) {
+                       return False;
+               }
+       }
 
        password1 = getpass("new password:");
        password2 = getpass("retype new password:");
@@ -244,7 +249,6 @@ static int new_user (char *username, char *fullname, char *homedir, char *drive,
 
        pdb_set_plaintext_passwd(sam_pwent, password1);
 
-       pdb_set_username(sam_pwent, username);
        if (fullname)
                pdb_set_fullname(sam_pwent, fullname);
        if (homedir)