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
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 |