From: | "Ross J(dot) Reedstrom" <reedstrm(at)rice(dot)edu> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: OID from insert has extra letter |
Date: | 2001-02-07 00:17:46 |
Message-ID: | 20010206181746.A22539@rice.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Feb 06, 2001 at 07:08:20PM -0500, Tom Lane wrote:
> ncm(at)zembu(dot)com (Nathan Myers) writes:
> > Thus, the original code is OK, except probably the literal "23"
> > in place of what should be a meaningful symbolic constant, or
> > (at least!) sizeof(buf) - 1.
>
> No, the original code is NOT ok. Read the man page again. As the
> code stood, the only null that ever got written to the buffer was the
> one installed in buf[23]. The only reason it appeared to work at all
> was that buf would start out all zeroes --- but after one or more uses
> it's not all zeroes anymore. See the bug report that started the
> thread ...
Seems it's a non-portable behavior:
The strncpy() function is similar, except that not more
than n bytes of src are copied. Thus, if there is no null
byte among the first n bytes of src, the result wil not be
null-terminated.
In the case where the length of src is less than that of
n, the remainder of dest will be padded with nulls.
I've already forgotten what platform the original bug report came from.
Ross
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2001-02-07 00:24:29 | Re: Include files for SPI are not installed |
Previous Message | Tom Lane | 2001-02-07 00:08:20 | Re: OID from insert has extra letter |