eapol/eapol_framework/eapol_common/type/securid/core/eap_type_securid_client.cpp
changeset 52 c23bdf5a328a
parent 33 938269283a16
--- a/eapol/eapol_framework/eapol_common/type/securid/core/eap_type_securid_client.cpp	Fri Sep 17 08:30:11 2010 +0300
+++ b/eapol/eapol_framework/eapol_common/type/securid/core/eap_type_securid_client.cpp	Mon Oct 04 00:19:54 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 /*
-* %version: %
+* %version: 14.1.3 %
 */
 
 // This is enumeration of EAPOL source code.
@@ -110,10 +110,17 @@
 	EAP_TRACE_DATA_DEBUG(
 		m_am_tools,
 		TRACE_FLAGS_DEFAULT,
-		(EAPL("EAP_type_GTC: function: complete_eap_identity_query, identity:"),
-		 m_identity.get_data(m_identity.get_data_length()),
+		(EAPL("EAP_type_GTC: function: complete_eap_identity_query, m_identity:"),
+		 m_identity.get_data(),
 		 m_identity.get_data_length()));
 
+	EAP_TRACE_DATA_DEBUG(
+		m_am_tools,
+		TRACE_FLAGS_DEFAULT,
+		(EAPL("EAP_type_GTC: function: complete_eap_identity_query, identity_utf8:"),
+		 identity_utf8->get_data(),
+		 identity_utf8->get_data_length()));
+
 	eap_status_e status = get_type_partner()->complete_eap_identity_query(
 		&m_send_network_id,
 		identity_utf8,
@@ -324,7 +331,7 @@
 				TRACE_FLAGS_DEFAULT,
 				(EAPL("WARNING: EAP-GTC: eap_type_securid_c::client_gtc_packet_process(): skips user interactions\n")));
 
-			status = client_gtc_complete_user_input_query(&m_passcode);
+			status = client_gtc_complete_user_input_query(&m_identity, &m_passcode);
 		}
 		else
 #endif //#if defined(USE_EAP_CONFIGURATION_TO_SKIP_USER_INTERACTIONS)
@@ -493,10 +500,22 @@
 //--------------------------------------------------
 
 EAP_FUNC_EXPORT eap_status_e eap_type_securid_c::client_gtc_complete_user_input_query(
+	const eap_variable_data_c * const identity_utf8,
 	const eap_variable_data_c * const response_utf8)
 {
 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
 
+	eap_status_e status(eap_status_ok);
+
+	if (identity_utf8->get_is_valid_data() == true)
+	{
+		status = m_identity.set_copy_of_buffer(identity_utf8);
+		if (status != eap_status_ok)
+		{
+			return EAP_STATUS_RETURN(m_am_tools, status);
+		}
+	}
+
 	// Send response
 	u32_t packet_length = eap_header_base_c::get_type_data_start_offset(m_use_eap_expanded_type)
 		+ response_utf8->get_data_length();
@@ -555,13 +574,20 @@
 				return EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error);
 			}
 
-			eap_status_e status = eap_fast_response.set_copy_of_buffer(EAP_FAST_EAP_GTC_RESPONSE_PREFIX, EAP_FAST_EAP_GTC_RESPONSE_PREFIX_LENGTH);
+			status = eap_fast_response.set_copy_of_buffer(EAP_FAST_EAP_GTC_RESPONSE_PREFIX, EAP_FAST_EAP_GTC_RESPONSE_PREFIX_LENGTH);
 			if (status != eap_status_ok)
 			{
 				delete packet;
 				return EAP_STATUS_RETURN(m_am_tools, status);
 			}
 
+			EAP_TRACE_DATA_DEBUG(
+				m_am_tools,
+				TRACE_FLAGS_DEFAULT,
+				(EAPL("EAP_type_GTC: function: eap_type_securid_c::client_gtc_complete_user_input_query(): m_identity:"),
+				 m_identity.get_data(),
+				 m_identity.get_data_length()));
+
 			status = eap_fast_response.add_data(&m_identity);
 			if (status != eap_status_ok)
 			{
@@ -576,6 +602,13 @@
 				return EAP_STATUS_RETURN(m_am_tools, status);
 			}
 
+			EAP_TRACE_DATA_DEBUG(
+				m_am_tools,
+				TRACE_FLAGS_DEFAULT,
+				(EAPL("EAP_type_GTC: function: eap_type_securid_c::client_gtc_complete_user_input_query(): response_utf8:"),
+				 response_utf8->get_data(),
+				 response_utf8->get_data_length()));
+
 			status = eap_fast_response.add_data(response_utf8);
 			if (status != eap_status_ok)
 			{
@@ -598,7 +631,7 @@
 		}
 	}
 
-	eap_status_e status = packet_send(packet, packet_length);
+	status = packet_send(packet, packet_length);
 	delete packet;
 
 	m_is_pending = false;