Re: [HACKERS] Patch to implement pg_current_logfile() function

Поиск
Список
Период
Сортировка
От Karl O. Pinc
Тема Re: [HACKERS] Patch to implement pg_current_logfile() function
Дата
Msg-id 20161210213849.75bc28cc@slate.meme.com
обсуждение исходный текст
Ответ на Re: [HACKERS] Patch to implement pg_current_logfile() function  ("Karl O. Pinc" <kop@meme.com>)
Ответы Re: [HACKERS] Patch to implement pg_current_logfile() function  (Gilles Darold <gilles.darold@dalibo.com>)
Список pgsql-hackers
On Sat, 10 Dec 2016 19:41:21 -0600
"Karl O. Pinc" <kop@meme.com> wrote:

> On Fri, 9 Dec 2016 23:36:12 -0600
> "Karl O. Pinc" <kop@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';

*sigh*


...
char    lbuffer[MAXPGPATH];
char    *log_format = lbuffer;
...
   /* extract log format and log file path from the line */   /* lbuffer == log_format, they share storage */   if
(log_filepath= strchr(lbuffer, ' '))       *log_filepath = '\0';   /* terminate log_format */   else   {       /*
Unknownformat, no space. Return NULL to caller. */       lbuffer[0] = '\0';       break;   }   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 <kop@meme.com>
> Free Software:  "You don't pay back, you pay forward."
>                  -- Robert A. Heinlein
> 




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



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Geoghegan
Дата:
Сообщение: Re: [HACKERS] Proposal : Parallel Merge Join
Следующее
От: Dilip Kumar
Дата:
Сообщение: Re: [HACKERS] Proposal : Parallel Merge Join