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:
#pragma pack(push,2)
union
{
unsigned char encripted_data[0x6c];
...
} _2004_header_data;
#pragma pack(pop)
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 <[email protected]> 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 [0], still getting same error "segfault".
[0]: http://202.164.53.122/~avneet/2004.patch
--
Avneet Kaur
www.avneetkhasla.wordpress.com