Use os_memdup()
This leads to cleaner code overall, and also reduces the size of the hostapd and wpa_supplicant binaries (in hwsim test build on x86_64) by about 2.5 and 3.5KiB respectively. The mechanical conversions all over the code were done with the following spatch: @@ expression SIZE, SRC; expression a; @@ -a = os_malloc(SIZE); +a = os_memdup(SRC, SIZE); <... if (!a) {...} ...> -os_memcpy(a, SRC, SIZE); Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
dbdda355d0
commit
a1f11e34c4
73 changed files with 201 additions and 376 deletions
|
@ -1261,10 +1261,9 @@ static u8 * eap_aka_getKey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_SIM_KEYING_DATA_LEN);
|
||||
key = os_memdup(data->msk, EAP_SIM_KEYING_DATA_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->msk, EAP_SIM_KEYING_DATA_LEN);
|
||||
*len = EAP_SIM_KEYING_DATA_LEN;
|
||||
return key;
|
||||
}
|
||||
|
@ -1278,10 +1277,9 @@ static u8 * eap_aka_get_emsk(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_EMSK_LEN);
|
||||
key = os_memdup(data->emsk, EAP_EMSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->emsk, EAP_EMSK_LEN);
|
||||
*len = EAP_EMSK_LEN;
|
||||
return key;
|
||||
}
|
||||
|
|
|
@ -467,13 +467,12 @@ static void eap_eke_process_identity(struct eap_sm *sm,
|
|||
|
||||
data->peerid_type = *pos++;
|
||||
os_free(data->peerid);
|
||||
data->peerid = os_malloc(end - pos);
|
||||
data->peerid = os_memdup(pos, end - pos);
|
||||
if (data->peerid == NULL) {
|
||||
wpa_printf(MSG_INFO, "EAP-EKE: Failed to allocate memory for peerid");
|
||||
eap_eke_fail(data, EAP_EKE_FAIL_PRIVATE_INTERNAL_ERROR);
|
||||
return;
|
||||
}
|
||||
os_memcpy(data->peerid, pos, end - pos);
|
||||
data->peerid_len = end - pos;
|
||||
wpa_printf(MSG_DEBUG, "EAP-EKE: Peer IDType %u", data->peerid_type);
|
||||
wpa_hexdump_ascii(MSG_DEBUG, "EAP-EKE: Peer Identity",
|
||||
|
@ -731,10 +730,9 @@ static u8 * eap_eke_getKey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_MSK_LEN);
|
||||
key = os_memdup(data->msk, EAP_MSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->msk, EAP_MSK_LEN);
|
||||
*len = EAP_MSK_LEN;
|
||||
|
||||
return key;
|
||||
|
@ -749,10 +747,9 @@ static u8 * eap_eke_get_emsk(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_EMSK_LEN);
|
||||
key = os_memdup(data->emsk, EAP_EMSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->emsk, EAP_EMSK_LEN);
|
||||
*len = EAP_EMSK_LEN;
|
||||
|
||||
return key;
|
||||
|
|
|
@ -471,12 +471,11 @@ static void * eap_fast_init(struct eap_sm *sm)
|
|||
eap_fast_reset(sm, data);
|
||||
return NULL;
|
||||
}
|
||||
data->srv_id = os_malloc(sm->eap_fast_a_id_len);
|
||||
data->srv_id = os_memdup(sm->eap_fast_a_id, sm->eap_fast_a_id_len);
|
||||
if (data->srv_id == NULL) {
|
||||
eap_fast_reset(sm, data);
|
||||
return NULL;
|
||||
}
|
||||
os_memcpy(data->srv_id, sm->eap_fast_a_id, sm->eap_fast_a_id_len);
|
||||
data->srv_id_len = sm->eap_fast_a_id_len;
|
||||
|
||||
if (sm->eap_fast_a_id_info == NULL) {
|
||||
|
|
|
@ -269,13 +269,12 @@ static void eap_gpsk_process_gpsk_2(struct eap_sm *sm,
|
|||
return;
|
||||
}
|
||||
os_free(data->id_peer);
|
||||
data->id_peer = os_malloc(alen);
|
||||
data->id_peer = os_memdup(pos, alen);
|
||||
if (data->id_peer == NULL) {
|
||||
wpa_printf(MSG_DEBUG, "EAP-GPSK: Not enough memory to store "
|
||||
"%d-octet ID_Peer", alen);
|
||||
return;
|
||||
}
|
||||
os_memcpy(data->id_peer, pos, alen);
|
||||
data->id_peer_len = alen;
|
||||
wpa_hexdump_ascii(MSG_DEBUG, "EAP-GPSK: ID_Peer",
|
||||
data->id_peer, data->id_peer_len);
|
||||
|
@ -575,10 +574,9 @@ static u8 * eap_gpsk_getKey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_MSK_LEN);
|
||||
key = os_memdup(data->msk, EAP_MSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->msk, EAP_MSK_LEN);
|
||||
*len = EAP_MSK_LEN;
|
||||
|
||||
return key;
|
||||
|
@ -593,10 +591,9 @@ static u8 * eap_gpsk_get_emsk(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_EMSK_LEN);
|
||||
key = os_memdup(data->emsk, EAP_EMSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->emsk, EAP_EMSK_LEN);
|
||||
*len = EAP_EMSK_LEN;
|
||||
|
||||
return key;
|
||||
|
@ -618,10 +615,9 @@ static u8 * eap_gpsk_get_session_id(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
sid = os_malloc(data->id_len);
|
||||
sid = os_memdup(data->session_id, data->id_len);
|
||||
if (sid == NULL)
|
||||
return NULL;
|
||||
os_memcpy(sid, data->session_id, data->id_len);
|
||||
*len = data->id_len;
|
||||
|
||||
return sid;
|
||||
|
|
|
@ -141,12 +141,11 @@ static void eap_gtc_process(struct eap_sm *sm, void *priv,
|
|||
} else {
|
||||
os_free(sm->identity);
|
||||
sm->identity_len = pos2 - pos;
|
||||
sm->identity = os_malloc(sm->identity_len);
|
||||
sm->identity = os_memdup(pos, sm->identity_len);
|
||||
if (sm->identity == NULL) {
|
||||
data->state = FAILURE;
|
||||
return;
|
||||
}
|
||||
os_memcpy(sm->identity, pos, sm->identity_len);
|
||||
}
|
||||
|
||||
if (eap_user_get(sm, sm->identity, sm->identity_len, 1) != 0) {
|
||||
|
|
|
@ -103,10 +103,9 @@ static void * eap_ikev2_init(struct eap_sm *sm)
|
|||
data->ikev2.proposal.encr = ENCR_AES_CBC;
|
||||
data->ikev2.proposal.dh = DH_GROUP2_1024BIT_MODP;
|
||||
|
||||
data->ikev2.IDi = os_malloc(sm->server_id_len);
|
||||
data->ikev2.IDi = os_memdup(sm->server_id, sm->server_id_len);
|
||||
if (data->ikev2.IDi == NULL)
|
||||
goto failed;
|
||||
os_memcpy(data->ikev2.IDi, sm->server_id, sm->server_id_len);
|
||||
data->ikev2.IDi_len = sm->server_id_len;
|
||||
|
||||
data->ikev2.get_shared_secret = eap_ikev2_get_shared_secret;
|
||||
|
|
|
@ -71,13 +71,12 @@ static void * eap_mschapv2_init(struct eap_sm *sm)
|
|||
}
|
||||
|
||||
if (sm->peer_challenge) {
|
||||
data->peer_challenge = os_malloc(CHALLENGE_LEN);
|
||||
data->peer_challenge = os_memdup(sm->peer_challenge,
|
||||
CHALLENGE_LEN);
|
||||
if (data->peer_challenge == NULL) {
|
||||
os_free(data);
|
||||
return NULL;
|
||||
}
|
||||
os_memcpy(data->peer_challenge, sm->peer_challenge,
|
||||
CHALLENGE_LEN);
|
||||
}
|
||||
|
||||
return data;
|
||||
|
|
|
@ -327,13 +327,12 @@ static void eap_pax_process_std_2(struct eap_sm *sm,
|
|||
}
|
||||
data->cid_len = cid_len;
|
||||
os_free(data->cid);
|
||||
data->cid = os_malloc(data->cid_len);
|
||||
data->cid = os_memdup(pos + 2, data->cid_len);
|
||||
if (data->cid == NULL) {
|
||||
wpa_printf(MSG_INFO, "EAP-PAX: Failed to allocate memory for "
|
||||
"CID");
|
||||
return;
|
||||
}
|
||||
os_memcpy(data->cid, pos + 2, data->cid_len);
|
||||
pos += 2 + data->cid_len;
|
||||
left -= 2 + data->cid_len;
|
||||
wpa_hexdump_ascii(MSG_MSGDUMP, "EAP-PAX: CID",
|
||||
|
|
|
@ -236,13 +236,12 @@ static void eap_psk_process_2(struct eap_sm *sm,
|
|||
left -= sizeof(*resp);
|
||||
|
||||
os_free(data->id_p);
|
||||
data->id_p = os_malloc(left);
|
||||
data->id_p = os_memdup(cpos, left);
|
||||
if (data->id_p == NULL) {
|
||||
wpa_printf(MSG_INFO, "EAP-PSK: Failed to allocate memory for "
|
||||
"ID_P");
|
||||
return;
|
||||
}
|
||||
os_memcpy(data->id_p, cpos, left);
|
||||
data->id_p_len = left;
|
||||
wpa_hexdump_ascii(MSG_MSGDUMP, "EAP-PSK: ID_P",
|
||||
data->id_p, data->id_p_len);
|
||||
|
@ -371,10 +370,9 @@ static void eap_psk_process_4(struct eap_sm *sm,
|
|||
pos += 16;
|
||||
left -= 16;
|
||||
|
||||
decrypted = os_malloc(left);
|
||||
decrypted = os_memdup(pos, left);
|
||||
if (decrypted == NULL)
|
||||
return;
|
||||
os_memcpy(decrypted, pos, left);
|
||||
|
||||
if (aes_128_eax_decrypt(data->tek, nonce, sizeof(nonce),
|
||||
wpabuf_head(respData), 22, decrypted, left,
|
||||
|
@ -450,10 +448,9 @@ static u8 * eap_psk_getKey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_MSK_LEN);
|
||||
key = os_memdup(data->msk, EAP_MSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->msk, EAP_MSK_LEN);
|
||||
*len = EAP_MSK_LEN;
|
||||
|
||||
return key;
|
||||
|
@ -468,10 +465,9 @@ static u8 * eap_psk_get_emsk(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_EMSK_LEN);
|
||||
key = os_memdup(data->emsk, EAP_EMSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->emsk, EAP_EMSK_LEN);
|
||||
*len = EAP_EMSK_LEN;
|
||||
|
||||
return key;
|
||||
|
|
|
@ -1035,11 +1035,10 @@ static u8 * eap_pwd_getkey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_MSK_LEN);
|
||||
key = os_memdup(data->msk, EAP_MSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
|
||||
os_memcpy(key, data->msk, EAP_MSK_LEN);
|
||||
*len = EAP_MSK_LEN;
|
||||
|
||||
return key;
|
||||
|
@ -1054,11 +1053,10 @@ static u8 * eap_pwd_get_emsk(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_EMSK_LEN);
|
||||
key = os_memdup(data->emsk, EAP_EMSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
|
||||
os_memcpy(key, data->emsk, EAP_EMSK_LEN);
|
||||
*len = EAP_EMSK_LEN;
|
||||
|
||||
return key;
|
||||
|
@ -1087,11 +1085,10 @@ static u8 * eap_pwd_get_session_id(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
id = os_malloc(1 + SHA256_MAC_LEN);
|
||||
id = os_memdup(data->session_id, 1 + SHA256_MAC_LEN);
|
||||
if (id == NULL)
|
||||
return NULL;
|
||||
|
||||
os_memcpy(id, data->session_id, 1 + SHA256_MAC_LEN);
|
||||
*len = 1 + SHA256_MAC_LEN;
|
||||
|
||||
return id;
|
||||
|
|
|
@ -326,10 +326,9 @@ static void eap_sake_process_challenge(struct eap_sm *sm,
|
|||
data->peerid = NULL;
|
||||
data->peerid_len = 0;
|
||||
if (attr.peerid) {
|
||||
data->peerid = os_malloc(attr.peerid_len);
|
||||
data->peerid = os_memdup(attr.peerid, attr.peerid_len);
|
||||
if (data->peerid == NULL)
|
||||
return;
|
||||
os_memcpy(data->peerid, attr.peerid, attr.peerid_len);
|
||||
data->peerid_len = attr.peerid_len;
|
||||
}
|
||||
|
||||
|
@ -460,10 +459,9 @@ static u8 * eap_sake_getKey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_MSK_LEN);
|
||||
key = os_memdup(data->msk, EAP_MSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->msk, EAP_MSK_LEN);
|
||||
*len = EAP_MSK_LEN;
|
||||
|
||||
return key;
|
||||
|
@ -478,10 +476,9 @@ static u8 * eap_sake_get_emsk(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_EMSK_LEN);
|
||||
key = os_memdup(data->emsk, EAP_EMSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->emsk, EAP_EMSK_LEN);
|
||||
*len = EAP_EMSK_LEN;
|
||||
|
||||
return key;
|
||||
|
|
|
@ -787,10 +787,9 @@ static u8 * eap_sim_getKey(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_SIM_KEYING_DATA_LEN);
|
||||
key = os_memdup(data->msk, EAP_SIM_KEYING_DATA_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->msk, EAP_SIM_KEYING_DATA_LEN);
|
||||
*len = EAP_SIM_KEYING_DATA_LEN;
|
||||
return key;
|
||||
}
|
||||
|
@ -804,10 +803,9 @@ static u8 * eap_sim_get_emsk(struct eap_sm *sm, void *priv, size_t *len)
|
|||
if (data->state != SUCCESS)
|
||||
return NULL;
|
||||
|
||||
key = os_malloc(EAP_EMSK_LEN);
|
||||
key = os_memdup(data->emsk, EAP_EMSK_LEN);
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
os_memcpy(key, data->emsk, EAP_EMSK_LEN);
|
||||
*len = EAP_EMSK_LEN;
|
||||
return key;
|
||||
}
|
||||
|
|
|
@ -228,14 +228,13 @@ static int eap_ttls_avp_parse(struct wpabuf *buf, struct eap_ttls_avp *parse)
|
|||
if (vendor_id == 0 && avp_code == RADIUS_ATTR_EAP_MESSAGE) {
|
||||
wpa_printf(MSG_DEBUG, "EAP-TTLS: AVP - EAP Message");
|
||||
if (parse->eap == NULL) {
|
||||
parse->eap = os_malloc(dlen);
|
||||
parse->eap = os_memdup(dpos, dlen);
|
||||
if (parse->eap == NULL) {
|
||||
wpa_printf(MSG_WARNING, "EAP-TTLS: "
|
||||
"failed to allocate memory "
|
||||
"for Phase 2 EAP data");
|
||||
goto fail;
|
||||
}
|
||||
os_memcpy(parse->eap, dpos, dlen);
|
||||
parse->eap_len = dlen;
|
||||
} else {
|
||||
u8 *neweap = os_realloc(parse->eap,
|
||||
|
@ -1054,12 +1053,11 @@ static void eap_ttls_process_phase2(struct eap_sm *sm,
|
|||
}
|
||||
|
||||
os_free(sm->identity);
|
||||
sm->identity = os_malloc(parse.user_name_len);
|
||||
sm->identity = os_memdup(parse.user_name, parse.user_name_len);
|
||||
if (sm->identity == NULL) {
|
||||
eap_ttls_state(data, FAILURE);
|
||||
goto done;
|
||||
}
|
||||
os_memcpy(sm->identity, parse.user_name, parse.user_name_len);
|
||||
sm->identity_len = parse.user_name_len;
|
||||
if (eap_user_get(sm, parse.user_name, parse.user_name_len, 1)
|
||||
!= 0) {
|
||||
|
|
|
@ -544,10 +544,9 @@ static int ikev2_process_idr(struct ikev2_initiator_data *data,
|
|||
}
|
||||
os_free(data->IDr);
|
||||
}
|
||||
data->IDr = os_malloc(idr_len);
|
||||
data->IDr = os_memdup(idr, idr_len);
|
||||
if (data->IDr == NULL)
|
||||
return -1;
|
||||
os_memcpy(data->IDr, idr, idr_len);
|
||||
data->IDr_len = idr_len;
|
||||
data->IDr_type = id_type;
|
||||
|
||||
|
@ -1147,10 +1146,9 @@ static struct wpabuf * ikev2_build_sa_auth(struct ikev2_initiator_data *data)
|
|||
return NULL;
|
||||
} else {
|
||||
os_free(data->shared_secret);
|
||||
data->shared_secret = os_malloc(secret_len);
|
||||
data->shared_secret = os_memdup(secret, secret_len);
|
||||
if (data->shared_secret == NULL)
|
||||
return NULL;
|
||||
os_memcpy(data->shared_secret, secret, secret_len);
|
||||
data->shared_secret_len = secret_len;
|
||||
}
|
||||
|
||||
|
|
|
@ -161,12 +161,10 @@ static TNC_Result TNC_TNCS_ReportMessageTypes(
|
|||
if (imv == NULL)
|
||||
return TNC_RESULT_INVALID_PARAMETER;
|
||||
os_free(imv->supported_types);
|
||||
imv->supported_types =
|
||||
os_malloc(typeCount * sizeof(TNC_MessageType));
|
||||
imv->supported_types = os_memdup(supportedTypes,
|
||||
typeCount * sizeof(TNC_MessageType));
|
||||
if (imv->supported_types == NULL)
|
||||
return TNC_RESULT_FATAL;
|
||||
os_memcpy(imv->supported_types, supportedTypes,
|
||||
typeCount * sizeof(TNC_MessageType));
|
||||
imv->num_supported_types = typeCount;
|
||||
|
||||
return TNC_RESULT_SUCCESS;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue