On Thu, 2006-12-28 at 11:28 -0500, Andrew Dunstan wrote:
> I wrote:
> > Looking at the code I see this in dbdimp.c:
> >
> >            strncpy(buffer, tempbuf, strlen(tempbuf)+1);
> >            buffer[strlen(tempbuf)] = '\0';
> >         
> > However, there is no check that buffer has enough space - the code 
> > just seems to assume it, which seems like a bug - that code is 
> > probably clobbering something important. I don't quite understand why 
> > we don't simply make an SV straight from tmpbuf, rather than copying 
> > to a fixed buffer anyway. PQgetCopyData() doesn't require a length 
> > param (unlike the now deprecated PQgetline()), and it seems very 
> > un-perlish for us to require it of the user at all.
> >
> >
> 
> 
> Here is an untested patch that will grow the buffer as needed, I hope. 
> It doesn't make the length param go away, but it makes it mostly 
> irrelevant :-)
> 
> cheers
> 
> andrew

Well, it's tested, and doesn't crash.  However, depending on the length
param the first or second record will be replaced with binary junk
and/or be blank.

-- 
PF <[EMAIL PROTECTED]>

Reply via email to