From be6467c335e39699557060dce4b1ed33c8c71864 Mon Sep 17 00:00:00 2001 From: Keith Winstein Date: Wed, 14 Sep 2011 14:39:11 -0400 Subject: [PATCH] Fixes for 32-bit machines per Stefie Tellex --- decrypt.cpp | 2 +- network.cpp | 9 ++++++--- transportsender.cpp | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/decrypt.cpp b/decrypt.cpp index 9f69ab2..c649d0d 100644 --- a/decrypt.cpp +++ b/decrypt.cpp @@ -49,7 +49,7 @@ int main( int argc, char *argv[] ) Message message = session.decrypt( ciphertext ); fprintf( stderr, "Nonce = %ld\n", - message.nonce.val() ); + (long)message.nonce.val() ); cout << message.text; } catch ( CryptoException e ) { cerr << e.text << endl; diff --git a/network.cpp b/network.cpp index 2c19c70..b054db8 100644 --- a/network.cpp +++ b/network.cpp @@ -13,6 +13,9 @@ using namespace std; using namespace Network; 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 */ Packet::Packet( string coded_packet, Session *session ) : seq( -1 ), @@ -23,8 +26,8 @@ Packet::Packet( string coded_packet, Session *session ) { Message message = session->decrypt( coded_packet ); - direction = (message.nonce.val() & 0x8000000000000000) ? TO_CLIENT : TO_SERVER; - seq = message.nonce.val() & 0x7FFFFFFFFFFFFFFF; + direction = (message.nonce.val() & DIRECTION_MASK) ? TO_CLIENT : TO_SERVER; + seq = message.nonce.val() & SEQUENCE_MASK; assert( message.text.size() >= 2 * sizeof( uint16_t ) ); @@ -38,7 +41,7 @@ Packet::Packet( string coded_packet, Session *session ) /* Output coded string from packet */ 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 ) }; diff --git a/transportsender.cpp b/transportsender.cpp index 88a7931..65ab4a3 100644 --- a/transportsender.cpp +++ b/transportsender.cpp @@ -191,7 +191,7 @@ void TransportSender::update_assumed_receiver_state( void ) while ( i != sent_states.end() ) { 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; } else { return;