Re: freebcp - problems with blobs >8K

Frediano Ziglio <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CAHt6W4ccreiobYEuOKCSk6nV66eGEffub6YuDcR=HS4V-jCzQQ@mail.gmail.com>
2014-05-16 18:42 GMT+01:00 Constantin Vasilyev <[email protected]>:
> Hi FreeTDS team,
>
>
> I ran into a problem trying to freebcp some larger blobs in and out of MS SQL 2008 server.
> The host table may look like:
>
> create table blobs (id int not null, data image)
>
>
>
> Smaller blobs load in and out just fine:
>
>> cat /tmp/blobs.bcp
> 1       0123456780
>> freebcp foo.dbo.blobs in /tmp/blobs.bcp -S MSSQL0 -c -U **** -P ****
>
> Starting copy...
> 1 rows copied.
>>
>
> but once the blob gets larger than 8K the command fails with errors like:
>
>
> Starting copy...
> *** glibc detected *** freebcp: free(): corrupted unsorted chunks: 0x0000000002241a90 ***
> *** glibc detected *** freebcp: malloc(): memory corruption: 0x0000000002243d10 ***
>
> I tried 0.91 stable and 0.92.377 with the same result.
>
> Any clue?
>
>
>
> Constantin
>


Well... good spot. The code actually for bcp and blobs is really
broken. There are two problems:
1- the send row for blobs and tds7+ (mssql) is broken causing buffer
overflow building it. This is quite easy to fix not using row buffer
but sending directly to network;
2- the column data for outputting bcp data is wrong (underestimated)
and dbconvert has no len check causing another buffer overflow. This
is harder to fix as passing len for some types cause extra spaces to
be added.

Frediano
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.