Don't do a 64bit read access from a string, since it may not be 64bit aligned.
Fixes crash with CPUs that require aligned access. Signed-off-by: Timo Sirainen <tss@iki.fi>
This commit is contained in:
committed by
Keith Winstein
parent
620152261e
commit
7117b61bf4
@@ -78,9 +78,10 @@ Fragment::Fragment( string &x )
|
||||
{
|
||||
assert( x.size() >= frag_header_len );
|
||||
|
||||
uint64_t *data64 = (uint64_t *)x.data();
|
||||
uint64_t data64;
|
||||
uint16_t *data16 = (uint16_t *)x.data();
|
||||
id = be64toh( data64[ 0 ] );
|
||||
memcpy( &data64, x.data(), sizeof( data64 ) );
|
||||
id = be64toh( data64 );
|
||||
fragment_num = be16toh( data16[ 4 ] );
|
||||
final = ( fragment_num & 0x8000 ) >> 15;
|
||||
fragment_num &= 0x7FFF;
|
||||
|
||||
Reference in New Issue
Block a user