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
|
@ -685,10 +685,9 @@ static int tlsv1_process_diffie_hellman(struct tlsv1_client *conn,
|
|||
pos, conn->dh_p_len);
|
||||
goto fail;
|
||||
}
|
||||
conn->dh_p = os_malloc(conn->dh_p_len);
|
||||
conn->dh_p = os_memdup(pos, conn->dh_p_len);
|
||||
if (conn->dh_p == NULL)
|
||||
goto fail;
|
||||
os_memcpy(conn->dh_p, pos, conn->dh_p_len);
|
||||
pos += conn->dh_p_len;
|
||||
wpa_hexdump(MSG_DEBUG, "TLSv1: DH p (prime)",
|
||||
conn->dh_p, conn->dh_p_len);
|
||||
|
@ -700,10 +699,9 @@ static int tlsv1_process_diffie_hellman(struct tlsv1_client *conn,
|
|||
if (val == 0 || val > (size_t) (end - pos))
|
||||
goto fail;
|
||||
conn->dh_g_len = val;
|
||||
conn->dh_g = os_malloc(conn->dh_g_len);
|
||||
conn->dh_g = os_memdup(pos, conn->dh_g_len);
|
||||
if (conn->dh_g == NULL)
|
||||
goto fail;
|
||||
os_memcpy(conn->dh_g, pos, conn->dh_g_len);
|
||||
pos += conn->dh_g_len;
|
||||
wpa_hexdump(MSG_DEBUG, "TLSv1: DH g (generator)",
|
||||
conn->dh_g, conn->dh_g_len);
|
||||
|
@ -717,10 +715,9 @@ static int tlsv1_process_diffie_hellman(struct tlsv1_client *conn,
|
|||
if (val == 0 || val > (size_t) (end - pos))
|
||||
goto fail;
|
||||
conn->dh_ys_len = val;
|
||||
conn->dh_ys = os_malloc(conn->dh_ys_len);
|
||||
conn->dh_ys = os_memdup(pos, conn->dh_ys_len);
|
||||
if (conn->dh_ys == NULL)
|
||||
goto fail;
|
||||
os_memcpy(conn->dh_ys, pos, conn->dh_ys_len);
|
||||
pos += conn->dh_ys_len;
|
||||
wpa_hexdump(MSG_DEBUG, "TLSv1: DH Ys (server's public value)",
|
||||
conn->dh_ys, conn->dh_ys_len);
|
||||
|
|
|
@ -1166,10 +1166,9 @@ static int tlsv1_set_dhparams_der(struct tlsv1_credentials *cred,
|
|||
if (hdr.length == 0)
|
||||
return -1;
|
||||
os_free(cred->dh_p);
|
||||
cred->dh_p = os_malloc(hdr.length);
|
||||
cred->dh_p = os_memdup(hdr.payload, hdr.length);
|
||||
if (cred->dh_p == NULL)
|
||||
return -1;
|
||||
os_memcpy(cred->dh_p, hdr.payload, hdr.length);
|
||||
cred->dh_p_len = hdr.length;
|
||||
pos = hdr.payload + hdr.length;
|
||||
|
||||
|
@ -1188,10 +1187,9 @@ static int tlsv1_set_dhparams_der(struct tlsv1_credentials *cred,
|
|||
if (hdr.length == 0)
|
||||
return -1;
|
||||
os_free(cred->dh_g);
|
||||
cred->dh_g = os_malloc(hdr.length);
|
||||
cred->dh_g = os_memdup(hdr.payload, hdr.length);
|
||||
if (cred->dh_g == NULL)
|
||||
return -1;
|
||||
os_memcpy(cred->dh_g, hdr.payload, hdr.length);
|
||||
cred->dh_g_len = hdr.length;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -274,13 +274,12 @@ static int x509_parse_public_key(const u8 *buf, size_t len,
|
|||
*/
|
||||
}
|
||||
os_free(cert->public_key);
|
||||
cert->public_key = os_malloc(hdr.length - 1);
|
||||
cert->public_key = os_memdup(pos + 1, hdr.length - 1);
|
||||
if (cert->public_key == NULL) {
|
||||
wpa_printf(MSG_DEBUG, "X509: Failed to allocate memory for "
|
||||
"public key");
|
||||
return -1;
|
||||
}
|
||||
os_memcpy(cert->public_key, pos + 1, hdr.length - 1);
|
||||
cert->public_key_len = hdr.length - 1;
|
||||
wpa_hexdump(MSG_MSGDUMP, "X509: subjectPublicKey",
|
||||
cert->public_key, cert->public_key_len);
|
||||
|
@ -925,10 +924,9 @@ static int x509_parse_alt_name_ip(struct x509_name *name,
|
|||
/* iPAddress OCTET STRING */
|
||||
wpa_hexdump(MSG_MSGDUMP, "X509: altName - iPAddress", pos, len);
|
||||
os_free(name->ip);
|
||||
name->ip = os_malloc(len);
|
||||
name->ip = os_memdup(pos, len);
|
||||
if (name->ip == NULL)
|
||||
return -1;
|
||||
os_memcpy(name->ip, pos, len);
|
||||
name->ip_len = len;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1700,14 +1698,13 @@ struct x509_certificate * x509_certificate_parse(const u8 *buf, size_t len)
|
|||
return NULL;
|
||||
}
|
||||
os_free(cert->sign_value);
|
||||
cert->sign_value = os_malloc(hdr.length - 1);
|
||||
cert->sign_value = os_memdup(pos + 1, hdr.length - 1);
|
||||
if (cert->sign_value == NULL) {
|
||||
wpa_printf(MSG_DEBUG, "X509: Failed to allocate memory for "
|
||||
"signatureValue");
|
||||
x509_certificate_free(cert);
|
||||
return NULL;
|
||||
}
|
||||
os_memcpy(cert->sign_value, pos + 1, hdr.length - 1);
|
||||
cert->sign_value_len = hdr.length - 1;
|
||||
wpa_hexdump(MSG_MSGDUMP, "X509: signature",
|
||||
cert->sign_value, cert->sign_value_len);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue