On Fri, 9 Dec 2016 23:36:12 -0600
"Karl O. Pinc" <k...@meme.com> wrote:

> Instead I propose (code I have not actually executed):
> ...
> char    lbuffer[MAXPGPATH];
> char    *log_format = lbuffer;
> ...
> 
>     /* extract log format and log file path from the line */
>     log_filepath = strchr(lbuffer, ' ');  /* lbuffer == log_format */
>     *log_filepath = '\0';                 /* terminate log_format */
>     log_filepath++;                       /* start of file path */
>     log_filepath[strcspn(log_filepath, "\n")] = '\0';

Er, I guess I prefer the more paranoid, just because who knows
what might have manged to somehow write the file that's read
into lbuffer:

...
char    lbuffer[MAXPGPATH];
char    *log_format = lbuffer;
...

    /* extract log format and log file path from the line */
    if (log_filepath = strchr(lbuffer, ' ')) /* lbuffer == log_format */
        *log_filepath = '\0';                /* terminate log_format */
    log_filepath++;                          /* start of file path */
    log_filepath[strcspn(log_filepath, "\n")] = '\0';

The file read is, of course, normally written by postgres.  But possibly
writing to unintended memory locations, even virtual address NULL, does
not seem good.

Any feedback from more experienced PG developers as how to best handle
this case would be welcome.

Regards,

Karl <k...@meme.com>
Free Software:  "You don't pay back, you pay forward."
                 -- Robert A. Heinlein


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to