Fixes for 32-bit machines per Stefie Tellex

This commit is contained in:
Keith Winstein
2011-09-14 14:39:11 -04:00
parent f3b9c60196
commit be6467c335
3 changed files with 8 additions and 5 deletions
+1 -1
View File
@@ -49,7 +49,7 @@ int main( int argc, char *argv[] )
Message message = session.decrypt( ciphertext ); Message message = session.decrypt( ciphertext );
fprintf( stderr, "Nonce = %ld\n", fprintf( stderr, "Nonce = %ld\n",
message.nonce.val() ); (long)message.nonce.val() );
cout << message.text; cout << message.text;
} catch ( CryptoException e ) { } catch ( CryptoException e ) {
cerr << e.text << endl; cerr << e.text << endl;
+6 -3
View File
@@ -13,6 +13,9 @@ using namespace std;
using namespace Network; using namespace Network;
using namespace Crypto; using namespace Crypto;
const uint64_t DIRECTION_MASK = uint64_t(1) << 63;
const uint64_t SEQUENCE_MASK = uint64_t(-1) ^ DIRECTION_MASK;
/* Read in packet from coded string */ /* Read in packet from coded string */
Packet::Packet( string coded_packet, Session *session ) Packet::Packet( string coded_packet, Session *session )
: seq( -1 ), : seq( -1 ),
@@ -23,8 +26,8 @@ Packet::Packet( string coded_packet, Session *session )
{ {
Message message = session->decrypt( coded_packet ); Message message = session->decrypt( coded_packet );
direction = (message.nonce.val() & 0x8000000000000000) ? TO_CLIENT : TO_SERVER; direction = (message.nonce.val() & DIRECTION_MASK) ? TO_CLIENT : TO_SERVER;
seq = message.nonce.val() & 0x7FFFFFFFFFFFFFFF; seq = message.nonce.val() & SEQUENCE_MASK;
assert( message.text.size() >= 2 * sizeof( uint16_t ) ); assert( message.text.size() >= 2 * sizeof( uint16_t ) );
@@ -38,7 +41,7 @@ Packet::Packet( string coded_packet, Session *session )
/* Output coded string from packet */ /* Output coded string from packet */
string Packet::tostring( Session *session ) string Packet::tostring( Session *session )
{ {
uint64_t direction_seq = (uint64_t( direction == TO_CLIENT ) << 63) | (seq & 0x7FFFFFFFFFFFFFFF); uint64_t direction_seq = (uint64_t( direction == TO_CLIENT ) << 63) | (seq & SEQUENCE_MASK);
uint16_t ts_net[ 2 ] = { htobe16( timestamp ), htobe16( timestamp_reply ) }; uint16_t ts_net[ 2 ] = { htobe16( timestamp ), htobe16( timestamp_reply ) };
+1 -1
View File
@@ -191,7 +191,7 @@ void TransportSender<MyState>::update_assumed_receiver_state( void )
while ( i != sent_states.end() ) { while ( i != sent_states.end() ) {
assert( now >= i->timestamp ); assert( now >= i->timestamp );
if ( int(now - i->timestamp) < connection->timeout() + ACK_DELAY ) { if ( uint64_t(now - i->timestamp) < connection->timeout() + ACK_DELAY ) {
assumed_receiver_state = i; assumed_receiver_state = i;
} else { } else {
return; return;