View Single Post

   
  #3 (permalink)  
Old 04-16-2008, 03:00 AM
Hiroshi Inoue
 
Posts: n/a
Default Re: Patch for snprintf problem (bug #1000650)

Ludek Finstrle wrote:
> Hello,
>
> I found the problem in snprintf on linux (maybe another unix) boxes
> in info.c (CVS HEAD). The problematic part is something like:
>
> buf = "text";
> snprintf(buf,size,"%s append",buf);
>
> buf = "text append" on Windows (MS VC compiler)
> buf = " append" on linux (gcc compiler)
>
> I solve it this way (main idea):
> snprintf(buf + strlen(buf), " append");


Hmm bad news.
If so, it may be better to use the sequence like the following for example.

char *query_ptr;
size_t bufsize_res;
int slen;

/* Initialize */
query_ptr = columns_query;
bufsize_res = sizeof(columns_query);

if (..)
{
if ((slen = snprintf(query_ptr, bufsize_res, .., )) <= 0)
{
.. error_handling ..
}
query_ptr += slen;
bufsize_res -= slen;
}

...

regards,
Hiroshi Inoue

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Reply With Quote