s3: Simplify pdb_set_plaintext_passwd() a bit
authorVolker Lendecke <vl@samba.org>
Mon, 14 Dec 2009 17:24:04 +0000 (18:24 +0100)
committerMichael Adam <obnox@samba.org>
Thu, 7 Jan 2010 10:07:52 +0000 (11:07 +0100)
Remove an indentation by the early return in

+       if (pwHistLen == 0) {
+               /* Set the history length to zero. */
+               pdb_set_pw_history(sampass, NULL, 0, PDB_CHANGED);
+               return true;
+       }

source3/passdb/pdb_get_set.c

index 4c240763dcf25e6d8d6c4cb943ad7022678bd463..af99e8110cbdfa7fd7a4caeea61b3ca67c9eb511 100644 (file)
@@ -983,6 +983,7 @@ bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext)
        uchar new_nt_p16[NT_HASH_LEN];
        uchar *pwhistory;
        uint32 pwHistLen;
+       uint32 current_history_len;
 
        if (!plaintext)
                return False;
@@ -1020,84 +1021,80 @@ bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext)
        }
 
        pdb_get_account_policy(PDB_POLICY_PASSWORD_HISTORY, &pwHistLen);
-       if (pwHistLen != 0){
-               uint32 current_history_len;
+
+       if (pwHistLen == 0) {
+               /* Set the history length to zero. */
+               pdb_set_pw_history(sampass, NULL, 0, PDB_CHANGED);
+               return true;
+       }
+
+       /*
+        * We need to make sure we don't have a race condition here -
+        * the account policy history length can change between when
+        * the pw_history was first loaded into the struct samu struct
+        * and now.... JRA.
+        */
+       pwhistory = (uchar *)pdb_get_pw_history(sampass, &current_history_len);
+
+       if (current_history_len != pwHistLen) {
                /*
-                * We need to make sure we don't have a race condition
-                * here - the account policy history length can change
-                * between when the pw_history was first loaded into
-                * the struct samu struct and now.... JRA.
+                * After closing and reopening struct samu the history
+                * values will sync up. We can't do this here.
                 */
-               pwhistory = (uchar *)pdb_get_pw_history(sampass,
-                                                       &current_history_len);
 
-               if (current_history_len != pwHistLen) {
-                       /*
-                        * After closing and reopening struct samu the history
-                        * values will sync up. We can't do this here.
-                        */
+               /*
+                * current_history_len > pwHistLen is not a problem -
+                * we have more history than we need.
+                */
 
+               if (current_history_len < pwHistLen) {
                        /*
-                        * current_history_len > pwHistLen is not a
-                        * problem - we have more history than we
-                        * need.
+                        * Ensure we have space for the needed history.
                         */
+                       uchar *new_history = (uchar *)TALLOC(
+                               sampass, pwHistLen*PW_HISTORY_ENTRY_LEN);
+                       if (!new_history) {
+                               return False;
+                       }
 
-                       if (current_history_len < pwHistLen) {
-                               /*
-                                * Ensure we have space for the needed history.
-                                */
-                               uchar *new_history = (uchar *)TALLOC(
-                                       sampass,
-                                       pwHistLen*PW_HISTORY_ENTRY_LEN);
-                               if (!new_history) {
-                                       return False;
-                               }
-
-                               /* And copy it into the new buffer. */
-                               if (current_history_len) {
-                                       memcpy(new_history, pwhistory,
-                                              current_history_len*PW_HISTORY_ENTRY_LEN);
-                               }
-                               /* Clearing out any extra space. */
-                               memset(&new_history[current_history_len*PW_HISTORY_ENTRY_LEN],
-                                      '\0', (pwHistLen-current_history_len)*PW_HISTORY_ENTRY_LEN);
-                               /* Finally replace it. */
-                               pwhistory = new_history;
+                       /* And copy it into the new buffer. */
+                       if (current_history_len) {
+                               memcpy(new_history, pwhistory,
+                                      current_history_len*PW_HISTORY_ENTRY_LEN);
                        }
+                       /* Clearing out any extra space. */
+                       memset(&new_history[current_history_len*PW_HISTORY_ENTRY_LEN],
+                              '\0', (pwHistLen-current_history_len)*PW_HISTORY_ENTRY_LEN);
+                       /* Finally replace it. */
+                       pwhistory = new_history;
                }
-               if (pwhistory && pwHistLen){
-                       /*
-                        * Make room for the new password in the
-                        * history list.
-                        */
-                       if (pwHistLen > 1) {
-                               memmove(&pwhistory[PW_HISTORY_ENTRY_LEN],
-                                       pwhistory, (pwHistLen -1)*PW_HISTORY_ENTRY_LEN );
-                       }
-                       /*
-                        * Create the new salt as the first part of
-                        * the history entry.
-                        */
-                       generate_random_buffer(pwhistory, PW_HISTORY_SALT_LEN);
-
-                       /*
-                        * Generate the md5 hash of the salt+new
-                        * password as the second part of the history
-                        * entry.
-                        */
+       }
 
-                       E_md5hash(pwhistory, new_nt_p16,
-                                 &pwhistory[PW_HISTORY_SALT_LEN]);
-                       pdb_set_pw_history(sampass, pwhistory, pwHistLen,
-                                          PDB_CHANGED);
-               } else {
-                       DEBUG (10,("pdb_get_set.c: pdb_set_plaintext_passwd: "
-                                  "pwhistory was NULL!\n"));
+       if (pwhistory && pwHistLen) {
+               /*
+                * Make room for the new password in the history list.
+                */
+               if (pwHistLen > 1) {
+                       memmove(&pwhistory[PW_HISTORY_ENTRY_LEN], pwhistory,
+                               (pwHistLen-1)*PW_HISTORY_ENTRY_LEN );
                }
+               /*
+                * Create the new salt as the first part of the
+                * history entry.
+                */
+               generate_random_buffer(pwhistory, PW_HISTORY_SALT_LEN);
+
+               /*
+                * Generate the md5 hash of the salt+new password as
+                * the second part of the history entry.
+                */
+
+               E_md5hash(pwhistory, new_nt_p16,
+                         &pwhistory[PW_HISTORY_SALT_LEN]);
+               pdb_set_pw_history(sampass, pwhistory, pwHistLen, PDB_CHANGED);
        } else {
-               /* Set the history length to zero. */
-               pdb_set_pw_history(sampass, NULL, 0, PDB_CHANGED);
+               DEBUG (10,("pdb_get_set.c: pdb_set_plaintext_passwd: "
+                          "pwhistory was NULL!\n"));
        }
        return True;
 }