ls: fix a bug where we may use uninintialized variable
authorDenis Vlasenko <vda.linux@googlemail.com>
Tue, 15 Jul 2008 05:21:47 +0000 (05:21 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Tue, 15 Jul 2008 05:21:47 +0000 (05:21 -0000)
coreutils/ls.c

index a76ced1b9d79f12e02a224562e877851c3b8b408..f4e71bc6a4d0305a4a02eeb6079e1d1cb32deffc 100644 (file)
@@ -837,7 +837,8 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
        int dnfiles;
        int dndirs;
        int i;
-       USE_FEATURE_LS_COLOR(char *color_opt;)
+       /* need to initialize since --color has _an optional_ argument */
+       USE_FEATURE_LS_COLOR(const char *color_opt = "always";)
 
        INIT_G();
 
@@ -888,15 +889,15 @@ int ls_main(int argc UNUSED_PARAM, char **argv)
        if (ENABLE_FEATURE_LS_COLOR_IS_DEFAULT && isatty(STDOUT_FILENO)) {
                char *p = getenv("LS_COLORS");
                /* LS_COLORS is unset, or (not empty && not "none") ? */
-               if (!p || (p[0] && strcmp(p, "none")))
+               if (!p || (p[0] && strcmp(p, "none") != 0))
                        show_color = 1;
        }
        if (opt & (1 << i)) {  /* next flag after short options */
-               if (!color_opt || !strcmp("always", color_opt))
+               if (strcmp("always", color_opt) == 0)
                        show_color = 1;
-               else if (color_opt && !strcmp("never", color_opt))
+               else if (strcmp("never", color_opt) == 0)
                        show_color = 0;
-               else if (color_opt && !strcmp("auto", color_opt) && isatty(STDOUT_FILENO))
+               else if (strcmp("auto", color_opt) == 0 && isatty(STDOUT_FILENO))
                        show_color = 1;
        }
 #endif