On 16.10.24 09:42, Peter Eisentraut wrote:
On 15.10.24 14:00, Alexander Lakhin 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.

Yes, this is indeed incorrect.  We need to keep a separate pointer to the start of the string to free later.  This matches the example on the strsep man page (https://man.freebsd.org/cgi/man.cgi?strsep(3)).  Patch attached.

I have committed both fixes mentioned in this thread in the last couple of days.



Reply via email to