stty: fix columns command. closes bug 791.
[oweals/busybox.git] / libbb / obscure.c
index 9ac6bcd82ac4b2db2a0891e7d1b282e6d18f84f3..19b87523ec6c5a6f17f52dd1d461d4c0ea65de57 100644 (file)
@@ -93,11 +93,11 @@ 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)
-               return("too short");
+               return "too short";
 
        /* no username as-is, as sub-string, reversed, capitalized, doubled */
        if (string_checker(new_p, pw->pw_name)) {
@@ -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;
 }