Create a machine account correctly if the unix account exists.
authorVolker Lendecke <vlendec@samba.org>
Tue, 7 Jan 2003 10:38:33 +0000 (10:38 +0000)
committerVolker Lendecke <vlendec@samba.org>
Tue, 7 Jan 2003 10:38:33 +0000 (10:38 +0000)
With this, my test for W2kSP3 join after pdbedit -a -m works fine.

Volker
(This used to be commit c9d0c5254c7d4ddb343f405652c609a0128e60f9)

source3/utils/pdbedit.c

index c229d100ca9a5fe8120952503ef106b6daf9392d..8aec35ac39239be15cff49d17f1bf639dae9d12d 100644 (file)
@@ -346,12 +346,9 @@ static int new_machine (struct pdb_context *in, const char *machine_in)
 {
        SAM_ACCOUNT *sam_pwent=NULL;
        fstring machinename;
+       struct passwd  *pwd = NULL;
        char name[16];
        
-       if (!NT_STATUS_IS_OK(pdb_init_sam (&sam_pwent))) {
-               return -1;
-       }
-
        fstrcpy(machinename, machine_in); 
 
        if (machinename[strlen (machinename) -1] == '$')
@@ -362,6 +359,19 @@ static int new_machine (struct pdb_context *in, const char *machine_in)
        safe_strcpy (name, machinename, 16);
        safe_strcat (name, "$", 16);
 
+       if ((pwd = getpwnam_alloc(name))) {
+               if (!NT_STATUS_IS_OK(pdb_init_sam_pw( &sam_pwent, pwd))) {
+                       fprintf(stderr, "Could not init sam from pw\n");
+                       passwd_free(&pwd);
+                       return -1;
+               }
+       } else {
+               if (!NT_STATUS_IS_OK(pdb_init_sam (&sam_pwent))) {
+                       fprintf(stderr, "Could not init sam from pw\n");
+                       return -1;
+               }
+       }
+
        pdb_set_plaintext_passwd (sam_pwent, machinename);
 
        pdb_set_username (sam_pwent, name, PDB_CHANGED);