]> eyrie.org Git - kerberos/krb5-strength.git/commitdiff
Begin error messages with a capital letter
authorRuss Allbery <eagle@eyrie.org>
Thu, 27 Mar 2014 19:58:58 +0000 (12:58 -0700)
committerRuss Allbery <eagle@eyrie.org>
Thu, 27 Mar 2014 19:58:58 +0000 (12:58 -0700)
Change the error messages returned for passwords that fail strength
checking to start with a capital letter.  This appears to be more
consistent with the error message conventions used inside Heimdal.

NEWS
plugin/classes.c
plugin/internal.h
tests/data/passwords/cdb.json
tests/data/passwords/classes.json
tests/data/passwords/history.json
tests/data/passwords/length.json
tests/data/passwords/letter.json
tests/data/passwords/principal.json
tests/data/passwords/sqlite.json
tools/heimdal-history

diff --git a/NEWS b/NEWS
index 72be2f3a14f4f771aa4391a6522a87159edc1bfd..f8b8be46841b517506e7f7776584c9a1833202a5 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,11 @@
                     User-Visible krb5-strength Changes
 
+krb5-strength 3.1 (unreleased)
+
+    Change the error messages returned for passwords that fail strength
+    checking to start with a capital letter.  This appears to be more
+    consistent with the error message conventions used inside Heimdal.
+
 krb5-strength 3.0 (2014-03-25)
 
     The krb5-strength plugin and heimdal-strength program now support a
index 6e79d14d760c6a40bf15d1f782cc65d0b03ba3e7..b9b7467d663c9521dfe11f2aa8d7281c50ce0878 100644 (file)
@@ -4,7 +4,7 @@
  * Checks whether the password satisfies a set of character class rules.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
- * Copyright 2013
+ * Copyright 2013, 2014
  *     The Board of Trustees of the Leland Stanford Junior University
  *
  * See LICENSE for licensing terms.
@@ -25,10 +25,6 @@ struct password_classes {
     bool symbol;
 };
 
-/* Abbreviate the most common error reporting syntax. */
-#define MUST_HAVE(ctx, err) \
-    strength_error_class((ctx), "password must contain " err)
-
 
 /*
  * Analyze a password and fill out a struct with flags indicating which
@@ -65,13 +61,13 @@ check_rule(krb5_context ctx, struct class_rule *rule, size_t length,
     if (length < rule->min || (rule->max > 0 && length > rule->max))
         return 0;
     if (rule->lower && !classes->lower)
-        return MUST_HAVE(ctx, "a lowercase letter");
+        return strength_error_class((ctx), ERROR_CLASS_LOWER);
     if (rule->upper && !classes->upper)
-        return MUST_HAVE(ctx, "an uppercase letter");
+        return strength_error_class((ctx), ERROR_CLASS_UPPER);
     if (rule->digit && !classes->digit)
-        return MUST_HAVE(ctx, "a number");
+        return strength_error_class((ctx), ERROR_CLASS_DIGIT);
     if (rule->symbol && !classes->symbol)
-        return MUST_HAVE(ctx, "a space or punctuation character");
+        return strength_error_class((ctx), ERROR_CLASS_SYMBOL);
     return 0;
 }
 
index a32832192c1eec8908c8111de505b2de40b20c4f..7e436636c293bc58c83b1615e275ca592bbc2276 100644 (file)
@@ -32,12 +32,17 @@ typedef struct krb5_pwqual_moddata_st *krb5_pwqual_moddata;
 #endif
 
 /* Error strings returned (and displayed to the user) for various failures. */
-#define ERROR_ASCII    "password contains non-ASCII or control characters"
-#define ERROR_DICT     "password found in list of common passwords"
-#define ERROR_LETTER   "password is only letters and spaces"
-#define ERROR_MINDIFF  "password does not contain enough unique characters"
-#define ERROR_SHORT    "password is too short"
-#define ERROR_USERNAME "password based on username or principal"
+#define ERROR_ASCII        "Password contains non-ASCII or control characters"
+#define ERROR_CLASS_LOWER  "Password must contain a lowercase letter"
+#define ERROR_CLASS_UPPER  "Password must contain an uppercase letter"
+#define ERROR_CLASS_DIGIT  "Password must contain a number"
+#define ERROR_CLASS_SYMBOL \
+    "Password must contain a space or punctuation character"
+#define ERROR_DICT         "Password found in list of common passwords"
+#define ERROR_LETTER       "Password is only letters and spaces"
+#define ERROR_MINDIFF      "Password does not contain enough unique characters"
+#define ERROR_SHORT        "Password is too short"
+#define ERROR_USERNAME     "Password based on username or principal"
 
 /*
  * A character class rule, which consists of a minimum length to which the
index d00f88bb3a369b1ecf7509c2a676f1d358521323..4b76c30af32d3e1541fba0cbb63579f555016df4 100644 (file)
         "principal": "test@EXAMPLE.ORG",
         "password": "password",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (longer)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (drop first)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1bitterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (drop last)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbane1",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (drop first two)",
         "principal": "test@EXAMPLE.ORG",
         "password": "abbitterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (drop last two)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbane12",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (drop first and last)",
         "principal": "test@EXAMPLE.ORG",
         "password": "'bitterbane'",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "dictionary with three characters",
index bb0da1a4649a034721184e4accf9be5d6b8033a2..0e03106696345ca097b26a75f49218cf5b4fe397 100644 (file)
@@ -4,28 +4,28 @@
         "principal": "test@EXAMPLE.ORG",
         "password": "PASSWORD98!",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain a lowercase letter"
+        "error": "Password must contain a lowercase letter"
     },
     {
         "name": "no uppercase (11)",
         "principal": "test@EXAMPLE.ORG",
         "password": "password98!",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain an uppercase letter"
+        "error": "Password must contain an uppercase letter"
     },
     {
         "name": "no digit (11)",
         "principal": "test@EXAMPLE.ORG",
         "password": "passwordXX!",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain a number"
+        "error": "Password must contain a number"
     },
     {
         "name": "no symbol (11)",
         "principal": "test@EXAMPLE.ORG",
         "password": "passwordXX9",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain a space or punctuation character"
+        "error": "Password must contain a space or punctuation character"
     },
     {
         "name": "all classes (11)",
         "principal": "test@EXAMPLE.ORG",
         "password": "PASSWORD98!WORD",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain a lowercase letter"
+        "error": "Password must contain a lowercase letter"
     },
     {
         "name": "no uppercase (15)",
         "principal": "test@EXAMPLE.ORG",
         "password": "password98!word",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain an uppercase letter"
+        "error": "Password must contain an uppercase letter"
     },
     {
         "name": "no digit (15)",
         "principal": "test@EXAMPLE.ORG",
         "password": "passwordXX!word",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain a number"
+        "error": "Password must contain a number"
     },
     {
         "name": "no symbol (12)",
         "principal": "test@EXAMPLE.ORG",
         "password": "PASSWORD98!WORDWORD",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain a lowercase letter"
+        "error": "Password must contain a lowercase letter"
     },
     {
         "name": "no uppercase (19)",
         "principal": "test@EXAMPLE.ORG",
         "password": "password98!wordword",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password must contain an uppercase letter"
+        "error": "Password must contain an uppercase letter"
     },
     {
         "name": "no digit (16)",
index b2568cc6a441bf65dde2b9dd35659928b1f9afa6..0896b2e293f7a0c4b214e776414c6c3b9755ea71 100644 (file)
@@ -8,7 +8,7 @@
         "name": "repeating the same password",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "password",
-        "error": "password was previously used"
+        "error": "Password was previously used"
     },
     {
         "name": "different password works",
         "name": "now that one fails",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "password2",
-        "error": "password was previously used"
+        "error": "Password was previously used"
     },
     {
         "name": "previous password still fails",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "password",
-        "error": "password was previously used"
+        "error": "Password was previously used"
     },
     {
         "name": "succeeds for different user",
@@ -36,6 +36,6 @@
         "name": "based on principal",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "someuser",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     }
 ]
index bb9697d26555e412e54504f252fb095b17ab4a13..3d886f122c03ce74ee8019fc94130d0cde7d6487 100644 (file)
@@ -4,7 +4,7 @@
         "principal": "test@EXAMPLE.COM",
         "password": "vUCZ2aX$Y.e",
         "code": "KADM5_PASS_Q_TOOSHORT",
-        "error": "password is too short"
+        "error": "Password is too short"
     },
     {
         "name": "sufficiently long password",
index 4a221fd54a32f41869dc5507b8610fb7ab99252f..9961e48a64f5b8bf51605b0824b073b033b8795c 100644 (file)
@@ -4,35 +4,35 @@
         "principal": "test@EXAMPLE.ORG",
         "password": "عربى",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password contains non-ASCII or control characters"
+        "error": "Password contains non-ASCII or control characters"
     },
     {
         "name": "control character",
         "principal": "test@EXAMPLE.ORG",
         "password": "ouchD\u0001artetch",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password contains non-ASCII or control characters"
+        "error": "Password contains non-ASCII or control characters"
     },
     {
         "name": "tab",
         "principal": "test@EXAMPLE.ORG",
         "password": "\touchDartetch",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password contains non-ASCII or control characters"
+        "error": "Password contains non-ASCII or control characters"
     },
     {
         "name": "all alphabetic",
         "principal": "test@EXAMPLE.ORG",
         "password": "ouchDartetch",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password is only letters and spaces"
+        "error": "Password is only letters and spaces"
     },
     {
         "name": "all alphabetic with spaces",
         "principal": "test@EXAMPLE.ORG",
         "password": "the perils of all good dogs",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password is only letters and spaces"
+        "error": "Password is only letters and spaces"
     },
     {
         "name": "punctuation",
         "principal": "test@EXAMPLE.ORG",
         "password": "11111111111111111111",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password does not contain enough unique characters"
+        "error": "Password does not contain enough unique characters"
     },
     {
         "name": "mindiff (2 characters)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1b1b1b1b1b1b1b1b1b1b",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password does not contain enough unique characters"
+        "error": "Password does not contain enough unique characters"
     },
     {
         "name": "mindiff (3 characters)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1bc1bc1bc1bc1bc1bc1b",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password does not contain enough unique characters"
+        "error": "Password does not contain enough unique characters"
     },
     {
         "name": "mindiff (4 characters)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1bcd1bcd1bcd1bcd1bcd",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password does not contain enough unique characters"
+        "error": "Password does not contain enough unique characters"
     },
     {
         "name": "mindiff (5 characters)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1bcde1bcde1bcde1bcde",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password does not contain enough unique characters"
+        "error": "Password does not contain enough unique characters"
     },
     {
         "name": "mindiff (6 characters)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1bcdef1bcdef1bcdef1b",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password does not contain enough unique characters"
+        "error": "Password does not contain enough unique characters"
     },
     {
         "name": "mindiff (7 characters)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1cdbfge1cdbeg1fcdbef",
         "code": "KADM5_PASS_Q_CLASS",
-        "error": "password does not contain enough unique characters"
+        "error": "Password does not contain enough unique characters"
     },
     {
         "name": "mindiff (8 characters)",
index 3f970c4af7408bee7b84517ff03b0316258f21a9..79e43f24bbedee47d86285c26df1b112a4c06889 100644 (file)
@@ -4,83 +4,83 @@
         "principal": "someuser@EXAMPLE.ORG",
         "password": "someuser",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "based on principal (reversed)",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "resuemos",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "based on principal with digits",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "someuser123",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "is full principal",
         "principal": "test@EXAMPLE.ORG",
         "password": "test@EXAMPLE.ORG",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "principal with leading digits",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "123someuser",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "principal with leading and trailing digits",
         "principal": "someuser@EXAMPLE.ORG",
         "password": "1someuser2",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "is realm (lowercase)",
         "principal": "someuser@NEWEXAMPLE.ORG",
         "password": "newexample",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "is realm (lowercase) with digits",
         "principal": "someuser@NEWEXAMPLE.ORG",
         "password": "newexample123",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "is realm (lowercase) with leading digits",
         "principal": "someuser@NEWEXAMPLE.ORG",
         "password": "123newexample",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "is realm reversed",
         "principal": "someuser@NEWEXAMPLE.ORG",
         "password": "ELPMAXEWEN",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "is second realm with digits",
         "principal": "someuser@NEWEXAMPLE.ORG",
         "password": "ORG1791520",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     },
     {
         "name": "is whole realm (mixed case)",
         "principal": "someuser@NEWEXAMPLE.ORG",
         "password": "NewExample.Org",
         "code": "KADM5_PASS_Q_GENERIC",
-        "error": "password based on username or principal"
+        "error": "Password based on username or principal"
     }
 ]
index 2b361af0ae270abe9c4d31d64e296dc62245c412..cf04d095518d6b9c6567667502d5ad17f6f8eef1 100644 (file)
         "principal": "test@EXAMPLE.ORG",
         "password": "password",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (longer)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (drop first)",
         "principal": "test@EXAMPLE.ORG",
         "password": "1bitterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (drop last)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbane1",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "dictionary with three characters",
         "principal": "test@EXAMPLE.ORG",
         "password": "ab",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "three-character dictionary word",
         "principal": "test@EXAMPLE.ORG",
         "password": "one",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "single-character password",
         "principal": "test@EXAMPLE.ORG",
         "password": "itterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 2)",
         "principal": "test@EXAMPLE.ORG",
         "password": "btterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 3/4)",
         "principal": "test@EXAMPLE.ORG",
         "password": "biterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 5)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bittrbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 6)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bittebane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 7)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 8)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbne",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 9)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbae",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: delete 10)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterban",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 1)",
         "principal": "test@EXAMPLE.ORG",
         "password": "Citterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 2)",
         "principal": "test@EXAMPLE.ORG",
         "password": "b7tterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 3)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bi#terbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 4)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bit*erbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 5)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bittgrbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 6)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitte.bane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 7)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitter ane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 8)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterb-ne",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 9)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbame",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: modify 10)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbanq",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 2)",
         "principal": "test@EXAMPLE.ORG",
         "password": "b7itterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 3)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bi#tterbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 4)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bit*terbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 4)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bit*terbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 5)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bittgerbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 6)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitte.rbane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 7)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitter bane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 8)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterb-ane",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 9)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbamne",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     },
     {
         "name": "in dictionary (edit: add 10)",
         "principal": "test@EXAMPLE.ORG",
         "password": "bitterbanqe",
         "code": "KADM5_PASS_Q_DICT",
-        "error": "password found in list of common passwords"
+        "error": "Password found in list of common passwords"
     }
 ]
index 59ce0560dccd530b97ec6fc3b736cbc740ca8c57..6c17469101cbd4e915441eba9f9a5052ecbc59a6 100755 (executable)
@@ -55,7 +55,7 @@ Readonly my $LENGTH_STATS_PATH => '/var/lib/heimdal-history/lengths.db';
 
 # The message to return to the user if we reject the password because it was
 # found in the user's history.
-Readonly my $REJECT_MESSAGE => 'password was previously used';
+Readonly my $REJECT_MESSAGE => 'Password was previously used';
 
 # The path to the external strength checking program to run.  This is done
 # first before checking history, and if it fails, that failure is returned as