eap: Use pen_t instead of uint32_t for vendor ID

This commit is contained in:
Tobias Brunner
2022-09-21 13:53:44 +02:00
parent 8f5ff23d6c
commit f6e6fcd2f6
29 changed files with 60 additions and 59 deletions
+1 -1
View File
@@ -1335,8 +1335,8 @@ static char* get_string(private_message_t *this, char *buf, int len)
if (payload->get_type(payload) == PLV2_EAP) if (payload->get_type(payload) == PLV2_EAP)
{ {
eap_payload_t *eap = (eap_payload_t*)payload; eap_payload_t *eap = (eap_payload_t*)payload;
uint32_t vendor;
eap_type_t type; eap_type_t type;
pen_t vendor;
char method[64] = ""; char method[64] = "";
type = eap->get_type(eap, &vendor); type = eap->get_type(eap, &vendor);
@@ -225,7 +225,7 @@ METHOD(eap_payload_t, get_identifier, uint8_t,
* @return the new offset or 0 if failed * @return the new offset or 0 if failed
*/ */
static size_t extract_type(private_eap_payload_t *this, size_t offset, static size_t extract_type(private_eap_payload_t *this, size_t offset,
eap_type_t *type, uint32_t *vendor) eap_type_t *type, pen_t *vendor)
{ {
if (this->data.len > offset) if (this->data.len > offset)
{ {
@@ -246,7 +246,7 @@ static size_t extract_type(private_eap_payload_t *this, size_t offset,
} }
METHOD(eap_payload_t, get_type, eap_type_t, METHOD(eap_payload_t, get_type, eap_type_t,
private_eap_payload_t *this, uint32_t *vendor) private_eap_payload_t *this, pen_t *vendor)
{ {
eap_type_t type; eap_type_t type;
@@ -274,7 +274,7 @@ METHOD(enumerator_t, enumerate_types, bool,
type_enumerator_t *this, va_list args) type_enumerator_t *this, va_list args)
{ {
eap_type_t *type; eap_type_t *type;
uint32_t *vendor; pen_t *vendor;
VA_ARGS_VGET(args, type, vendor); VA_ARGS_VGET(args, type, vendor);
this->offset = extract_type(this->payload, this->offset, type, vendor); this->offset = extract_type(this->payload, this->offset, type, vendor);
@@ -286,7 +286,7 @@ METHOD(eap_payload_t, get_types, enumerator_t*,
{ {
type_enumerator_t *enumerator; type_enumerator_t *enumerator;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
size_t offset; size_t offset;
offset = extract_type(this, 4, &type, &vendor); offset = extract_type(this, 4, &type, &vendor);
@@ -391,7 +391,7 @@ eap_payload_t *eap_payload_create_code(eap_code_t code, uint8_t identifier)
/** /**
* Write the given type either expanded or not * Write the given type either expanded or not
*/ */
static void write_type(bio_writer_t *writer, eap_type_t type, uint32_t vendor, static void write_type(bio_writer_t *writer, eap_type_t type, pen_t vendor,
bool expanded) bool expanded)
{ {
if (expanded) if (expanded)
@@ -410,11 +410,11 @@ static void write_type(bio_writer_t *writer, eap_type_t type, uint32_t vendor,
* Described in header * Described in header
*/ */
eap_payload_t *eap_payload_create_nak(uint8_t identifier, eap_type_t type, eap_payload_t *eap_payload_create_nak(uint8_t identifier, eap_type_t type,
uint32_t vendor, bool expanded) pen_t vendor, bool expanded)
{ {
enumerator_t *enumerator; enumerator_t *enumerator;
eap_type_t reg_type; eap_type_t reg_type;
uint32_t reg_vendor; pen_t reg_vendor;
bio_writer_t *writer; bio_writer_t *writer;
chunk_t data; chunk_t data;
bool added_any = FALSE, found_vendor = FALSE; bool added_any = FALSE, found_vendor = FALSE;
@@ -81,13 +81,13 @@ struct eap_payload_t {
* @param vendor pointer receiving vendor identifier * @param vendor pointer receiving vendor identifier
* @return EAP method type, vendor specific if vendor != 0 * @return EAP method type, vendor specific if vendor != 0
*/ */
eap_type_t (*get_type) (eap_payload_t *this, uint32_t *vendor); eap_type_t (*get_type) (eap_payload_t *this, pen_t *vendor);
/** /**
* Enumerate the EAP method types contained in an EAP-Nak (i.e. get_type() * Enumerate the EAP method types contained in an EAP-Nak (i.e. get_type()
* returns EAP_NAK). * returns EAP_NAK).
* *
* @return enumerator over (eap_type_t type, uint32_t vendor) * @return enumerator over (eap_type_t type, pen_t vendor)
*/ */
enumerator_t* (*get_types) (eap_payload_t *this); enumerator_t* (*get_types) (eap_payload_t *this);
@@ -149,6 +149,6 @@ eap_payload_t *eap_payload_create_code(eap_code_t code, uint8_t identifier);
* @return eap_payload_t object * @return eap_payload_t object
*/ */
eap_payload_t *eap_payload_create_nak(uint8_t identifier, eap_type_t type, eap_payload_t *eap_payload_create_nak(uint8_t identifier, eap_type_t type,
uint32_t vendor, bool expanded); pen_t vendor, bool expanded);
#endif /** EAP_PAYLOAD_H_ @}*/ #endif /** EAP_PAYLOAD_H_ @}*/
+1 -1
View File
@@ -595,7 +595,7 @@ METHOD(eap_method_t, initiate, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_aka_peer_t *this, uint32_t *vendor) private_eap_aka_peer_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_AKA; return EAP_AKA;
@@ -638,7 +638,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_aka_server_t *this, uint32_t *vendor) private_eap_aka_server_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_AKA; return EAP_AKA;
@@ -83,7 +83,7 @@ CALLBACK(entry_matches_cb, bool,
* Load the given EAP method * Load the given EAP method
*/ */
static eap_method_t *load_method(private_eap_dynamic_t *this, static eap_method_t *load_method(private_eap_dynamic_t *this,
eap_type_t type, uint32_t vendor) eap_type_t type, pen_t vendor)
{ {
eap_method_t *method; eap_method_t *method;
@@ -191,7 +191,7 @@ METHOD(eap_method_t, process, status_t,
private_eap_dynamic_t *this, eap_payload_t *in, eap_payload_t **out) private_eap_dynamic_t *this, eap_payload_t *in, eap_payload_t **out)
{ {
eap_type_t received_type, type; eap_type_t received_type, type;
uint32_t received_vendor, vendor; pen_t received_vendor, vendor;
received_type = in->get_type(in, &received_vendor); received_type = in->get_type(in, &received_vendor);
if (received_vendor == 0 && received_type == EAP_NAK) if (received_vendor == 0 && received_type == EAP_NAK)
@@ -246,7 +246,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_dynamic_t *this, uint32_t *vendor) private_eap_dynamic_t *this, pen_t *vendor)
{ {
if (this->method) if (this->method)
{ {
@@ -356,7 +356,7 @@ static void get_supported_eap_types(private_eap_dynamic_t *this)
{ {
enumerator_t *enumerator; enumerator_t *enumerator;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
enumerator = charon->eap->create_enumerator(charon->eap, EAP_SERVER); enumerator = charon->eap->create_enumerator(charon->eap, EAP_SERVER);
while (enumerator->enumerate(enumerator, &type, &vendor)) while (enumerator->enumerate(enumerator, &type, &vendor))
+1 -1
View File
@@ -186,7 +186,7 @@ METHOD(eap_method_t, process_server, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_gtc_t *this, uint32_t *vendor) private_eap_gtc_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_GTC; return EAP_GTC;
@@ -125,7 +125,7 @@ METHOD(eap_method_t, initiate_server, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_identity_t *this, uint32_t *vendor) private_eap_identity_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_IDENTITY; return EAP_IDENTITY;
+1 -1
View File
@@ -205,7 +205,7 @@ METHOD(eap_method_t, process_server, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_md5_t *this, uint32_t *vendor) private_eap_md5_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_MD5; return EAP_MD5;
@@ -1316,7 +1316,7 @@ METHOD(eap_method_t, process_server, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_mschapv2_t *this, uint32_t *vendor) private_eap_mschapv2_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_MSCHAPV2; return EAP_MSCHAPV2;
+1 -1
View File
@@ -78,7 +78,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_peap_t *this, uint32_t *vendor) private_eap_peap_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_PEAP; return EAP_PEAP;
@@ -72,7 +72,7 @@ METHOD(tls_application_t, process, status_t,
eap_payload_t *in; eap_payload_t *in;
eap_code_t code; eap_code_t code;
eap_type_t type, received_type; eap_type_t type, received_type;
uint32_t vendor, received_vendor; pen_t vendor, received_vendor;
status = this->avp->process(this->avp, reader, &data, status = this->avp->process(this->avp, reader, &data,
this->ph1_method->get_identifier(this->ph1_method)); this->ph1_method->get_identifier(this->ph1_method));
@@ -138,7 +138,7 @@ METHOD(tls_application_t, process, status_t,
if (received_vendor) if (received_vendor)
{ {
DBG1(DBG_IKE, "server requested vendor specific EAP method %d-%d " DBG1(DBG_IKE, "server requested vendor specific EAP method %d-%d "
"(id 0x%02X", received_type, received_vendor, "(id 0x%02X)", received_type, received_vendor,
in->get_identifier(in)); in->get_identifier(in));
} }
else else
@@ -192,7 +192,7 @@ METHOD(tls_application_t, build, status_t,
chunk_t data; chunk_t data;
eap_code_t code; eap_code_t code;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
if (this->out) if (this->out)
{ {
@@ -168,7 +168,7 @@ METHOD(tls_application_t, process, status_t,
eap_payload_t *in; eap_payload_t *in;
eap_code_t code; eap_code_t code;
eap_type_t type = EAP_NAK, received_type; eap_type_t type = EAP_NAK, received_type;
uint32_t vendor, received_vendor; pen_t vendor, received_vendor;
status = this->avp->process(this->avp, reader, &data, status = this->avp->process(this->avp, reader, &data,
this->ph1_method->get_identifier(this->ph1_method)); this->ph1_method->get_identifier(this->ph1_method));
@@ -339,7 +339,7 @@ METHOD(tls_application_t, build, status_t,
chunk_t data; chunk_t data;
eap_code_t code; eap_code_t code;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
if (this->ph2_method == NULL && this->start_phase2 && this->start_phase2_id) if (this->ph2_method == NULL && this->start_phase2 && this->start_phase2_id)
{ {
@@ -57,7 +57,7 @@ struct private_eap_radius_t {
/** /**
* EAP vendor, if any * EAP vendor, if any
*/ */
uint32_t vendor; pen_t vendor;
/** /**
* EAP message identifier * EAP message identifier
@@ -717,7 +717,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_radius_t *this, uint32_t *vendor) private_eap_radius_t *this, pen_t *vendor)
{ {
*vendor = this->vendor; *vendor = this->vendor;
return this->type; return this->type;
+1 -1
View File
@@ -651,7 +651,7 @@ METHOD(eap_method_t, initiate, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_sim_peer_t *this, uint32_t *vendor) private_eap_sim_peer_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_SIM; return EAP_SIM;
@@ -552,7 +552,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_sim_server_t *this, uint32_t *vendor) private_eap_sim_server_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_SIM; return EAP_SIM;
+1 -1
View File
@@ -75,7 +75,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_tls_t *this, uint32_t *vendor) private_eap_tls_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_TLS; return EAP_TLS;
+1 -1
View File
@@ -181,7 +181,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_tnc_t *this, uint32_t *vendor) private_eap_tnc_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return this->type; return this->type;
+1 -1
View File
@@ -78,7 +78,7 @@ METHOD(eap_method_t, process, status_t,
} }
METHOD(eap_method_t, get_type, eap_type_t, METHOD(eap_method_t, get_type, eap_type_t,
private_eap_ttls_t *this, uint32_t *vendor) private_eap_ttls_t *this, pen_t *vendor)
{ {
*vendor = 0; *vendor = 0;
return EAP_TTLS; return EAP_TTLS;
@@ -76,7 +76,7 @@ METHOD(tls_application_t, process, status_t,
eap_packet_t *pkt; eap_packet_t *pkt;
eap_code_t code; eap_code_t code;
eap_type_t type, received_type; eap_type_t type, received_type;
uint32_t vendor, received_vendor; pen_t vendor, received_vendor;
uint16_t eap_len; uint16_t eap_len;
size_t eap_pos = 0; size_t eap_pos = 0;
bool concatenated = FALSE; bool concatenated = FALSE;
@@ -241,7 +241,7 @@ METHOD(tls_application_t, build, status_t,
chunk_t data; chunk_t data;
eap_code_t code; eap_code_t code;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
if (this->method == NULL && this->start_phase2) if (this->method == NULL && this->start_phase2)
{ {
@@ -164,7 +164,7 @@ METHOD(tls_application_t, process, status_t,
eap_payload_t *in; eap_payload_t *in;
eap_code_t code; eap_code_t code;
eap_type_t type = EAP_NAK, received_type; eap_type_t type = EAP_NAK, received_type;
uint32_t vendor, received_vendor; pen_t vendor, received_vendor;
status = this->avp->process(this->avp, reader, &data); status = this->avp->process(this->avp, reader, &data);
switch (status) switch (status)
@@ -310,7 +310,7 @@ METHOD(tls_application_t, build, status_t,
chunk_t data; chunk_t data;
eap_code_t code; eap_code_t code;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
if (this->method == NULL && this->start_phase2 && if (this->method == NULL && this->start_phase2 &&
lib->settings->get_bool(lib->settings, lib->settings->get_bool(lib->settings,
+1 -1
View File
@@ -478,7 +478,7 @@ static void process_eap(private_tnc_pdp_t *this, radius_message_t *request,
eap_payload_t *in, *out = NULL; eap_payload_t *in, *out = NULL;
eap_method_t *method; eap_method_t *method;
eap_type_t eap_type; eap_type_t eap_type;
uint32_t eap_vendor; pen_t eap_vendor;
chunk_t data, message = chunk_empty, msk = chunk_empty; chunk_t data, message = chunk_empty, msk = chunk_empty;
chunk_t user_name = chunk_empty, nas_id = chunk_empty; chunk_t user_name = chunk_empty, nas_id = chunk_empty;
identification_t *group = NULL; identification_t *group = NULL;
+1 -1
View File
@@ -114,7 +114,7 @@ static bool verify_eap(private_xauth_eap_t *this, eap_method_t *backend)
eap_payload_t *request, *response; eap_payload_t *request, *response;
eap_method_t *frontend; eap_method_t *frontend;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
status_t status; status_t status;
if (backend->initiate(backend, &request) != NEED_MORE) if (backend->initiate(backend, &request) != NEED_MORE)
+4 -4
View File
@@ -36,7 +36,7 @@ struct eap_entry_t {
/** /**
* vendor ID, 0 for default EAP methods * vendor ID, 0 for default EAP methods
*/ */
uint32_t vendor; pen_t vendor;
/** /**
* Role of the method returned by the constructor, EAP_SERVER or EAP_PEER * Role of the method returned by the constructor, EAP_SERVER or EAP_PEER
@@ -71,7 +71,7 @@ struct private_eap_manager_t {
}; };
METHOD(eap_manager_t, add_method, void, METHOD(eap_manager_t, add_method, void,
private_eap_manager_t *this, eap_type_t type, uint32_t vendor, private_eap_manager_t *this, eap_type_t type, pen_t vendor,
eap_role_t role, eap_constructor_t constructor) eap_role_t role, eap_constructor_t constructor)
{ {
eap_entry_t *entry = malloc_thing(eap_entry_t); eap_entry_t *entry = malloc_thing(eap_entry_t);
@@ -111,7 +111,7 @@ CALLBACK(filter_methods, bool,
{ {
eap_entry_t *entry; eap_entry_t *entry;
eap_type_t *type; eap_type_t *type;
uint32_t *vendor; pen_t *vendor;
VA_ARGS_VGET(args, type, vendor); VA_ARGS_VGET(args, type, vendor);
@@ -152,7 +152,7 @@ METHOD(eap_manager_t, create_enumerator, enumerator_t*,
} }
METHOD(eap_manager_t, create_instance, eap_method_t*, METHOD(eap_manager_t, create_instance, eap_method_t*,
private_eap_manager_t *this, eap_type_t type, uint32_t vendor, private_eap_manager_t *this, eap_type_t type, pen_t vendor,
eap_role_t role, identification_t *server, identification_t *peer) eap_role_t role, identification_t *server, identification_t *peer)
{ {
enumerator_t *enumerator; enumerator_t *enumerator;
+3 -3
View File
@@ -45,7 +45,7 @@ struct eap_manager_t {
* @param role EAP role of the registered method * @param role EAP role of the registered method
* @param constructor constructor function, returns an eap_method_t * @param constructor constructor function, returns an eap_method_t
*/ */
void (*add_method)(eap_manager_t *this, eap_type_t type, uint32_t vendor, void (*add_method)(eap_manager_t *this, eap_type_t type, pen_t vendor,
eap_role_t role, eap_constructor_t constructor); eap_role_t role, eap_constructor_t constructor);
/** /**
@@ -62,7 +62,7 @@ struct eap_manager_t {
* even though it is registered as method with this manager). * even though it is registered as method with this manager).
* *
* @param role EAP role of methods to enumerate * @param role EAP role of methods to enumerate
* @return enumerator over (eap_type_t type, uint32_t vendor) * @return enumerator over (eap_type_t type, pen_t vendor)
*/ */
enumerator_t* (*create_enumerator)(eap_manager_t *this, eap_role_t role); enumerator_t* (*create_enumerator)(eap_manager_t *this, eap_role_t role);
@@ -77,7 +77,7 @@ struct eap_manager_t {
* @return EAP method instance, NULL if no constructor found * @return EAP method instance, NULL if no constructor found
*/ */
eap_method_t* (*create_instance)(eap_manager_t *this, eap_type_t type, eap_method_t* (*create_instance)(eap_manager_t *this, eap_type_t type,
uint32_t vendor, eap_role_t role, pen_t vendor, eap_role_t role,
identification_t *server, identification_t *server,
identification_t *peer); identification_t *peer);
+1 -1
View File
@@ -97,7 +97,7 @@ struct eap_method_t {
* @param vendor pointer receiving vendor identifier for type, 0 for none * @param vendor pointer receiving vendor identifier for type, 0 for none
* @return type of the EAP method * @return type of the EAP method
*/ */
eap_type_t (*get_type) (eap_method_t *this, uint32_t *vendor); eap_type_t (*get_type) (eap_method_t *this, pen_t *vendor);
/** /**
* Check if this EAP method authenticates the server. * Check if this EAP method authenticates the server.
@@ -115,7 +115,7 @@ struct private_eap_authenticator_t {
* load an EAP method * load an EAP method
*/ */
static eap_method_t *load_method(private_eap_authenticator_t *this, static eap_method_t *load_method(private_eap_authenticator_t *this,
eap_type_t type, uint32_t vendor, eap_role_t role) eap_type_t type, pen_t vendor, eap_role_t role)
{ {
identification_t *server, *peer, *aaa; identification_t *server, *peer, *aaa;
auth_cfg_t *auth; auth_cfg_t *auth;
@@ -154,7 +154,7 @@ static eap_payload_t* server_initiate_eap(private_eap_authenticator_t *this,
auth_cfg_t *auth; auth_cfg_t *auth;
eap_type_t type; eap_type_t type;
identification_t *id; identification_t *id;
uint32_t vendor; pen_t vendor;
eap_payload_t *out; eap_payload_t *out;
char *action; char *action;
@@ -248,7 +248,7 @@ static eap_payload_t* server_process_eap(private_eap_authenticator_t *this,
eap_payload_t *in) eap_payload_t *in)
{ {
eap_type_t type, received_type, conf_type; eap_type_t type, received_type, conf_type;
uint32_t vendor, received_vendor, conf_vendor; pen_t vendor, received_vendor, conf_vendor;
eap_payload_t *out; eap_payload_t *out;
auth_cfg_t *auth; auth_cfg_t *auth;
@@ -361,7 +361,7 @@ static eap_payload_t* client_process_eap(private_eap_authenticator_t *this,
eap_payload_t *in) eap_payload_t *in)
{ {
eap_type_t type, conf_type; eap_type_t type, conf_type;
uint32_t vendor, conf_vendor; pen_t vendor, conf_vendor;
auth_cfg_t *auth; auth_cfg_t *auth;
eap_payload_t *out; eap_payload_t *out;
identification_t *id; identification_t *id;
@@ -470,7 +470,7 @@ static bool verify_auth(private_eap_authenticator_t *this, message_t *message,
auth_cfg_t *auth; auth_cfg_t *auth;
keymat_v2_t *keymat; keymat_v2_t *keymat;
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
auth_payload = (auth_payload_t*)message->get_payload(message, auth_payload = (auth_payload_t*)message->get_payload(message,
PLV2_AUTH); PLV2_AUTH);
@@ -640,7 +640,7 @@ METHOD(authenticator_t, process_client, status_t,
} }
if (this->require_mutual && !this->method->is_mutual(this->method)) if (this->require_mutual && !this->method->is_mutual(this->method))
{ /* we require mutual authentication due to EAP-only */ { /* we require mutual authentication due to EAP-only */
uint32_t vendor; pen_t vendor;
DBG1(DBG_IKE, "EAP-only authentication requires a mutual and " DBG1(DBG_IKE, "EAP-only authentication requires a mutual and "
"MSK deriving EAP method, but %N is not", "MSK deriving EAP method, but %N is not",
@@ -668,7 +668,7 @@ METHOD(authenticator_t, process_client, status_t,
case EAP_SUCCESS: case EAP_SUCCESS:
{ {
eap_type_t type; eap_type_t type;
uint32_t vendor; pen_t vendor;
auth_cfg_t *cfg; auth_cfg_t *cfg;
if (!this->method) if (!this->method)
@@ -745,7 +745,7 @@ METHOD(authenticator_t, is_mutual, bool,
{ {
if (this->method) if (this->method)
{ {
uint32_t vendor; pen_t vendor;
if (this->method->get_type(this->method, &vendor) != EAP_IDENTITY || if (this->method->get_type(this->method, &vendor) != EAP_IDENTITY ||
vendor != 0) vendor != 0)
+2 -2
View File
@@ -142,7 +142,7 @@ eap_vendor_type_t *eap_vendor_type_from_string(char *str)
enumerator_t *enumerator; enumerator_t *enumerator;
eap_vendor_type_t *result = NULL; eap_vendor_type_t *result = NULL;
eap_type_t type = 0; eap_type_t type = 0;
uint32_t vendor = 0; pen_t vendor = 0;
char *part, *end; char *part, *end;
/* parse EAP method string of the form: [eap-]type[-vendor] */ /* parse EAP method string of the form: [eap-]type[-vendor] */
@@ -170,7 +170,7 @@ eap_vendor_type_t *eap_vendor_type_from_string(char *str)
} }
errno = 0; errno = 0;
vendor = strtoul(part, &end, 0); vendor = strtoul(part, &end, 0);
if (*end != '\0' || errno) if (*end != '\0' || errno || vendor >= PEN_UNASSIGNED)
{ {
DBG1(DBG_LIB, "invalid EAP vendor: %s", part); DBG1(DBG_LIB, "invalid EAP vendor: %s", part);
type = 0; type = 0;
+2 -1
View File
@@ -28,6 +28,7 @@ typedef enum eap_type_t eap_type_t;
typedef struct eap_vendor_type_t eap_vendor_type_t; typedef struct eap_vendor_type_t eap_vendor_type_t;
#include <library.h> #include <library.h>
#include <pen/pen.h>
/** /**
* EAP code, type of an EAP message * EAP code, type of an EAP message
@@ -99,7 +100,7 @@ struct eap_vendor_type_t {
/** /**
* Vendor Id * Vendor Id
*/ */
uint32_t vendor; pen_t vendor;
}; };
/** /**