X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=libbb%2Fobscure.c;h=19b87523ec6c5a6f17f52dd1d461d4c0ea65de57;hb=d7171c114028815df4e92f9c26875f1d60c6af2a;hp=56aacc91029a0b0f7a9e1d7f79b7fb6558757038;hpb=079f8afa0a16112cbaf7012c82b38b7358b82141;p=oweals%2Fbusybox.git diff --git a/libbb/obscure.c b/libbb/obscure.c index 56aacc910..19b87523e 100644 --- a/libbb/obscure.c +++ b/libbb/obscure.c @@ -93,7 +93,7 @@ static const char *obscure_msg(const char *old_p, const char *new_p, const struc /* Add 2 for each type of characters to the minlen of password */ int size = CONFIG_PASSWORD_MINLEN + 8; const char *p; - char hostname[255]; + char *hostname; /* size */ if (!new_p || (length = strlen(new_p)) < CONFIG_PASSWORD_MINLEN) @@ -108,12 +108,11 @@ static const char *obscure_msg(const char *old_p, const char *new_p, const struc return "similar to gecos"; } /* hostname as-is, as sub-string, reversed, capitalized, doubled */ - if (gethostname(hostname, 255) == 0) { - hostname[254] = '\0'; - if (string_checker(new_p, hostname)) { - return "similar to hostname"; - } - } + hostname = safe_gethostname(); + i = string_checker(new_p, hostname); + free(hostname); + if (i) + return "similar to hostname"; /* Should / Must contain a mix of: */ for (i = 0; i < length; i++) { @@ -130,7 +129,8 @@ static const char *obscure_msg(const char *old_p, const char *new_p, const struc c = 0; p = new_p; while (1) { - if ((p = strchr(p, new_p[i])) == NULL) { + p = strchr(p, new_p[i]); + if (p == NULL) { break; } c++; @@ -157,14 +157,14 @@ static const char *obscure_msg(const char *old_p, const char *new_p, const struc return NULL; } -int obscure(const char *old, const char *newval, const struct passwd *pwdp) +int FAST_FUNC 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; }