Re: pgsql: Fix strftime usage on Win32 when trying to fetch the locale-aware

From: Magnus Hagander <magnus(at)hagander(dot)net>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: Fix strftime usage on Win32 when trying to fetch the locale-aware
Date: 2009-01-09 13:52:05
Message-ID: 49675685.1020103@hagander.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Tom Lane wrote:
> mha(at)postgresql(dot)org (Magnus Hagander) writes:
>> Fix strftime usage on Win32 when trying to fetch the locale-aware
>> parts of a time string so it properly handles different encodings.
>
> Hmm, this patch has
>
> + wchar_t wbuf[MAX_L10N_DATA];
> +
> + len = wcsftime(wbuf, sizeof(wbuf), format, tm);
>
> The Single Unix Spec's definition of wcsftime says that the above
> risks a buffer overrun, and the correct second argument would be
> MAX_L10N_DATA. Now I realize that SUS is a poor guide for
> Windows-specific code, but are you sure this is right?

Now that I read it again, I think you're right. What MS says is:
"If the total number of characters, including the terminating null, is
more than maxsize, both strftime and wcsftime return 0 and the contents
of strDest are indeterminate."

The important difference being "character" vs "bytes", right?

> Also, I believe we've deprecated StrNCpy; use strlcpy if possible.

Ok, I'll change that.

//Magnus

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2009-01-09 13:55:51 Re: pgsql: Fix strftime usage on Win32 when trying to fetch the locale-aware
Previous Message Tom Lane 2009-01-09 13:41:45 Re: pgsql: Fix strftime usage on Win32 when trying to fetch the locale-aware