| 
					
				 | 
			
			
				@@ -1119,11 +1119,7 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   crypt_path_t *cpath = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   char hexcookie[9]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int circ_needs_uptime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  char intro_key_digest[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  size_t auth_len = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  char auth_data[REND_DESC_COOKIE_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   time_t now = time(NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  char diffie_hellman_hash[DIGEST_LEN]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   time_t elapsed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int replay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1296,8 +1292,9 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /* If the service performs client authorization, check included auth data. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (service->clients) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (auth_len > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (rend_check_authorization(service, auth_data)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (parsed_req->version == 3 && parsed_req->u.v3.auth_len > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (rend_check_authorization(service, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                   (const char*)parsed_req->u.v3.auth_data)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log_info(LD_REND, "Authorization data in INTRODUCE2 cell are valid."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log_info(LD_REND, "The authorization data that are contained in " 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1410,9 +1407,6 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   memwipe(buf, 0, sizeof(buf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   memwipe(serviceid, 0, sizeof(serviceid)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   memwipe(hexcookie, 0, sizeof(hexcookie)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  memwipe(intro_key_digest, 0, sizeof(intro_key_digest)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  memwipe(auth_data, 0, sizeof(auth_data)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  memwipe(diffie_hellman_hash, 0, sizeof(diffie_hellman_hash)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /* Free the parsed cell */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (parsed_req) { 
			 |