On 15.10.24 14:07, Ranier Vilela wrote:
    I also wonder, if other places touched by 5d2e1cc11 need corrections
    too.
    I played with
    PG_COLOR=always PG_COLORS="error=01;31" .../initdb

    and it looks like this free() call in pg_logging_init():
                 char       *colors = strdup(pg_colors_env);

                 if (colors)
                 {
    ...
                     while ((token = strsep(&colors, ":")))
                     {
    ...
                     }

                     free(colors);
                 }
    gets null in colors.

Yeah, I also saw this usage, but I was waiting for a definition for the first report.
The solution IMO, would be the same.

diff --git a/src/common/logging.c b/src/common/logging.c
index aedd1ae2d8..45b5316d48 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -121,7 +121,7 @@ pg_logging_init(const char *argv0)
   {
   char   *token;

- while ((token = strsep(&colors, ":")))
+ while ((token = strsep(&colors, ":")) != NULL && colors != NULL)
   {
   char   *e = strchr(token, '=');
The advantage of this change is that it would avoid processing unnecessary tokens.

This wouldn't fix anything, I think. If colors is NULL, then strsep() already returns NULL, so the added code does nothing.



Reply via email to