]> granicus.if.org Git - apache/commitdiff
Verify that password has been truncated before printing a warning.
authorStefan Fritsch <sf@apache.org>
Sat, 24 Oct 2009 12:39:41 +0000 (12:39 +0000)
committerStefan Fritsch <sf@apache.org>
Sat, 24 Oct 2009 12:39:41 +0000 (12:39 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@829355 13f79535-47bb-0310-9956-ffa450edef68

support/htpasswd.c

index c8cac25611a15ab78ffe99d5cca858aae27d0891..20c616d38225723a88ab46ead75c43702ff1aae7 100644 (file)
@@ -186,10 +186,6 @@ static int mkrecord(char *user, char *record, apr_size_t rlen, char *passwd,
         pw = pwin;
         memset(pwv, '\0', sizeof(pwin));
     }
-    if (alg == ALG_CRYPT && strlen(pw) > 8) {
-        apr_file_printf(errfile, "Warning: Password truncated to 8 characters "
-                        "by CRYPT algorithm." NL);
-    }
     switch (alg) {
 
     case ALG_APSHA:
@@ -223,6 +219,15 @@ static int mkrecord(char *user, char *record, apr_size_t rlen, char *passwd,
         salt[8] = '\0';
 
         apr_cpystrn(cpw, crypt(pw, salt), sizeof(cpw) - 1);
+        if (strlen(pw) > 8) {
+            char *truncpw = strdup(pw);
+            truncpw[8] = '\0';
+            if (!strcmp(cpw, crypt(pw, salt))) {
+                apr_file_printf(errfile, "Warning: Password truncated to 8 characters "
+                                "by CRYPT algorithm." NL);
+            }
+            free(truncpw);
+        }
         break;
 #endif
     }