|Subject:||Re: [libredwg] Decode R2004 version|
|Date:||Wed, 03 Jul 2013 22:27:33 +0200|
|User-agent:||Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7|
It was my fault, when I first looked at your patch I have overread that you not only reordered
the fields but resized some of them from 32 Bit to 64 Bit. In combination that is correct!
When you now do a sizeof(_2004_header_data) it will return 118 Bytes on a 64 Bit platform.
Calculating the size of the struct by "hand" will result in 108 Bytes. Actually the compiler aligns
the fields in a different way so that 4 Bytes are wasted.
Write the struct definition like this:
unsigned char encripted_data[0x6c];
This will force the compiler to align the fields at a 2 Byte boundary and a sizeof(_2004_header_data) will result in 108 Bytes.
On a 32 Bit platform the "unsigned long int" type is 4 Bytes wide not 8 Bytes!
To get save with this use the int64_t type for 8 Byte types and int32_t for 4 Byte types, like the structs in decode_R2007.c.
Am 03.07.2013 08:11, schrieb Avneet Kaur:
On Sun, Jun 23, 2013 at 4:43 AM, Till Heuschmann <address@hidden> wrote:- There is the system_section union the section_page_checksum is the value that the calculated checksum must be compared with. - Calculate the checksum of the section header data (this is the system_section union ss) with a seed of 0. - Calculate the crc32 of the section data with the previously calculated checksum as seed.Please check this , still getting same error "segfault". : http://184.108.40.206/~avneet/2004.patch -- Avneet Kaur www.avneetkhasla.wordpress.com
|[Prev in Thread]||Current Thread||[Next in Thread]|