| From: | Peter Eisentraut <peter(at)eisentraut(dot)org> | 
|---|---|
| To: | Alexander Lakhin <exclusion(at)gmail(dot)com>, Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> | 
| Cc: | David Steele <david(at)pgmasters(dot)net>, Michael Paquier <michael(at)paquier(dot)xyz>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: replace strtok() | 
| Date: | 2024-10-16 07:42:22 | 
| Message-ID: | f693a885-f456-42f1-a407-9b0ada4b62c4@eisentraut.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
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.
| Attachment | Content-Type | Size | 
|---|---|---|
| 0001-Fix-memory-leaks-from-incorrect-strsep-uses.patch | text/plain | 1.9 KB | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andy Fan | 2024-10-16 07:43:27 | Re: New function normal_rand_array function to contrib/tablefunc. | 
| Previous Message | Anthonin Bonnefoy | 2024-10-16 07:12:52 | Re: Set query_id for query contained in utility statement |