man: do not mangle $MANPATH in memory
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 30 Nov 2014 18:39:58 +0000 (19:39 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 30 Nov 2014 18:39:58 +0000 (19:39 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/man.c

index ccb57a93f7a3e061f44e09b9cba84cff7e263cc4..c39870e674b310d095e7c408f272b82d00cc61d7 100644 (file)
@@ -155,9 +155,9 @@ static char **add_MANPATH(char **man_path_list, int *count_mp, char *path)
 
                next_path = strchr(path, ':');
                if (next_path) {
-                       *next_path = '\0';
-                       if (next_path++ == path) /* "::"? */
+                       if (next_path == path) /* "::"? */
                                goto next;
+                       *next_path = '\0';
                }
                /* Do we already have path? */
                path_element = man_path_list;
@@ -174,8 +174,10 @@ static char **add_MANPATH(char **man_path_list, int *count_mp, char *path)
  skip:
                if (!next_path)
                        break;
+               /* "path" may be a result of getenv(), be nice and don't mangle it */
+               *next_path = ':';
  next:
-               path = next_path;
+               path = next_path + 1;
        }
        return man_path_list;
 }