|  | @@ -111,14 +111,14 @@ relay_set_digest(crypto_digest_t *digest, cell_t *cell)
 | 
	
		
			
				|  |  |  static int
 | 
	
		
			
				|  |  |  relay_digest_matches(crypto_digest_t *digest, cell_t *cell)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  char received_integrity[4], calculated_integrity[4];
 | 
	
		
			
				|  |  | +  uint32_t received_integrity, calculated_integrity;
 | 
	
		
			
				|  |  |    relay_header_t rh;
 | 
	
		
			
				|  |  |    crypto_digest_t *backup_digest=NULL;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    backup_digest = crypto_digest_dup(digest);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    relay_header_unpack(&rh, cell->payload);
 | 
	
		
			
				|  |  | -  memcpy(received_integrity, rh.integrity, 4);
 | 
	
		
			
				|  |  | +  memcpy(&received_integrity, rh.integrity, 4);
 | 
	
		
			
				|  |  |    memset(rh.integrity, 0, 4);
 | 
	
		
			
				|  |  |    relay_header_pack(cell->payload, &rh);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -127,15 +127,15 @@ relay_digest_matches(crypto_digest_t *digest, cell_t *cell)
 | 
	
		
			
				|  |  |  //    received_integrity[2], received_integrity[3]);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    crypto_digest_add_bytes(digest, (char*) cell->payload, CELL_PAYLOAD_SIZE);
 | 
	
		
			
				|  |  | -  crypto_digest_get_digest(digest, calculated_integrity, 4);
 | 
	
		
			
				|  |  | +  crypto_digest_get_digest(digest, (char*) &calculated_integrity, 4);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (tor_memneq(received_integrity, calculated_integrity, 4)) {
 | 
	
		
			
				|  |  | +  if (calculated_integrity != received_integrity) {
 | 
	
		
			
				|  |  |  //    log_fn(LOG_INFO,"Recognized=0 but bad digest. Not recognizing.");
 | 
	
		
			
				|  |  |  // (%d vs %d).", received_integrity, calculated_integrity);
 | 
	
		
			
				|  |  |      /* restore digest to its old form */
 | 
	
		
			
				|  |  |      crypto_digest_assign(digest, backup_digest);
 | 
	
		
			
				|  |  |      /* restore the relay header */
 | 
	
		
			
				|  |  | -    memcpy(rh.integrity, received_integrity, 4);
 | 
	
		
			
				|  |  | +    memcpy(rh.integrity, &received_integrity, 4);
 | 
	
		
			
				|  |  |      relay_header_pack(cell->payload, &rh);
 | 
	
		
			
				|  |  |      crypto_digest_free(backup_digest);
 | 
	
		
			
				|  |  |      return 0;
 |