[Shapelib] Memory issue reading string field?
Brian Peschel
brianp at occinc.com
Mon Aug 23 10:12:50 PDT 2010
I think I just found it. I was loading the value into an std::string,
so the length shouldn't matter, but then loading it back to to char*
with a newline and didn't account for the newline. <sigh>
> I'm really "out", but if the "size" of the string can cause memory
> corruptions, so, maybe, the program have a "limit" to the size of the
> string, but is not checking if this limite is been observed...
>
> If the code is in C or C++, probably you are writting after the size of the
> variable.
>
> Like if I declare a variable as char name [5]
>
> And then try to put "PESCHEL" in it.
>
> If the program don't check this, you will write over memory that was not
> meant to.
>
> Well.
>
> Only an "educated guess" I think...
>
> 2010/8/19 Brian Peschel<brianp at occinc.com>
>
>> I have a simple DBF file I am trying to read:
>>
>> dBase Reader and Converter V. 0.8, (c) 2002 - 2003 by Bjoern Berg
>>
>> -- File statistics
>> dBase version.........: FoxBase+/dBASE III+ (without memo)
>> Date of last update...: 1995-07-26
>> Number of records.....: 1414347 (001594cbd)
>> Length of header......: 97 (0061d)
>> Record length.........: 81 (0051d)
>> Columns in file.......: 2
>> Rows in file..........: 1414347
>>
>> +---------------+-------+---------------+---------------+---------------+
>> | field name | type | field adress | length | field dec. |
>> +---------------+-------+---------------+---------------+---------------+
>> | ID | N | 0 | 10 | 0 |
>> | String | C | 0 | 70 | 0 |
>> +---------------+-------+---------------+---------------+---------------+
>>
>> I am seeing memory corruption in my program after reading this combo from
>> the DBF.
>> ID: 1374067
>> String: UNITED STATES DEPARTMENT OF THE INTERIOR PATUXENT WILDLIFE
>> RESEARCH CE
>> What makes this interesting is the string is 70 characters long (which is
>> the width of the field).
>>
>> If I change the string in the DBF to:
>> ID: 1374067
>> String: US DEPT OF THE INTERIOR PATUXENT WILDLIFE RESEARCH CENTER
>> (which is 57 characters) I no longer have any memory corruption.
>>
>> I tries this on both 1.2.10 and 1.3.0b2. Any ideas?
>>
>> - B
More information about the Shapelib
mailing list