Re: OID from insert has extra letter

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

In response to

Responses

Browse pgsql-hackers by date

  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