of crypt do not truncate passwords.
*/
-#include <ctype.h>
-#include <unistd.h>
-#include <string.h>
-#include <strings.h>
-
#include "libbb.h"
static int string_checker_helper(const char *p1, const char *p2) __attribute__ ((__pure__));
/* check string */
int ret = string_checker_helper(p1, p2);
/* Make our own copy */
- char *p = bb_xstrdup(p1);
+ char *p = xstrdup(p1);
/* reverse string */
size = strlen(p);
int c;
int length;
int mixed = 0;
- /* Add 1 for each type of characters to the minlen of password */
+ /* Add 2 for each type of characters to the minlen of password */
int size = CONFIG_PASSWORD_MINLEN + 8;
const char *p;
char hostname[255];
/* size */
if (!new_p || (length = strlen(new_p)) < CONFIG_PASSWORD_MINLEN)
- return("too short");
+ return "too short";
/* no username as-is, as sub-string, reversed, capitalized, doubled */
if (string_checker(new_p, pw->pw_name)) {
return "similar to username";
}
/* no gecos as-is, as sub-string, reversed, capitalized, doubled */
- if (string_checker(new_p, pw->pw_gecos)) {
+ if (*pw->pw_gecos && string_checker(new_p, pw->pw_gecos)) {
return "similar to gecos";
}
/* hostname as-is, as sub-string, reversed, capitalized, doubled */
return NULL;
}
-int obscure(const char *old, const char *newval, const struct passwd *pwdp)
+int obscure(const char *old, const char *newval, const struct passwd *pw)
{
const char *msg;
- if ((msg = obscure_msg(old, newval, pwdp))) {
- printf("Bad password: %s.\n", msg);
- /* If user is root warn only */
- return (getuid())? 1 : 0;
+ msg = obscure_msg(old, newval, pw);
+ if (msg) {
+ printf("Bad password: %s\n", msg);
+ return 1;
}
return 0;
}