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
|
@ -318,11 +318,10 @@ static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
|
|||
for (i = 0; i < NUM_WEP_KEYS; i++) {
|
||||
if (ssid->wep_key_len[i] == 0)
|
||||
continue;
|
||||
wep->key[i] = os_malloc(ssid->wep_key_len[i]);
|
||||
wep->key[i] = os_memdup(ssid->wep_key[i],
|
||||
ssid->wep_key_len[i]);
|
||||
if (wep->key[i] == NULL)
|
||||
return -1;
|
||||
os_memcpy(wep->key[i], ssid->wep_key[i],
|
||||
ssid->wep_key_len[i]);
|
||||
wep->len[i] = ssid->wep_key_len[i];
|
||||
}
|
||||
wep->idx = ssid->wep_tx_keyidx;
|
||||
|
|
|
@ -99,13 +99,12 @@ static int wpa_config_read_blobs(struct wpa_config *config, HKEY hk)
|
|||
break;
|
||||
}
|
||||
blob->name = os_strdup((char *) name);
|
||||
blob->data = os_malloc(datalen);
|
||||
blob->data = os_memdup(data, datalen);
|
||||
if (blob->name == NULL || blob->data == NULL) {
|
||||
wpa_config_free_blob(blob);
|
||||
errors++;
|
||||
break;
|
||||
}
|
||||
os_memcpy(blob->data, data, datalen);
|
||||
blob->len = datalen;
|
||||
|
||||
wpa_config_set_blob(config, blob);
|
||||
|
|
|
@ -319,13 +319,12 @@ static void wpa_supplicant_ctrl_iface_rx(struct wpa_ctrl_dst *dst, size_t len)
|
|||
}
|
||||
|
||||
os_free(dst->rsp_buf);
|
||||
dst->rsp_buf = os_malloc(send_len);
|
||||
dst->rsp_buf = os_memdup(send_buf, send_len);
|
||||
if (dst->rsp_buf == NULL) {
|
||||
ctrl_close_pipe(dst);
|
||||
os_free(reply);
|
||||
return;
|
||||
}
|
||||
os_memcpy(dst->rsp_buf, send_buf, send_len);
|
||||
os_free(reply);
|
||||
|
||||
if (!WriteFileEx(dst->pipe, dst->rsp_buf, send_len, &dst->overlap,
|
||||
|
@ -739,13 +738,12 @@ static void wpa_supplicant_global_iface_rx(struct wpa_global_dst *dst,
|
|||
}
|
||||
|
||||
os_free(dst->rsp_buf);
|
||||
dst->rsp_buf = os_malloc(send_len);
|
||||
dst->rsp_buf = os_memdup(send_buf, send_len);
|
||||
if (dst->rsp_buf == NULL) {
|
||||
global_close_pipe(dst);
|
||||
os_free(reply);
|
||||
return;
|
||||
}
|
||||
os_memcpy(dst->rsp_buf, send_buf, send_len);
|
||||
os_free(reply);
|
||||
|
||||
if (!WriteFileEx(dst->pipe, dst->rsp_buf, send_len, &dst->overlap,
|
||||
|
|
|
@ -1076,12 +1076,11 @@ static int wpas_dbus_get_scan_ssids(DBusMessage *message, DBusMessageIter *var,
|
|||
}
|
||||
|
||||
if (len != 0) {
|
||||
ssid = os_malloc(len);
|
||||
ssid = os_memdup(val, len);
|
||||
if (ssid == NULL) {
|
||||
*reply = wpas_dbus_error_no_memory(message);
|
||||
return -1;
|
||||
}
|
||||
os_memcpy(ssid, val, len);
|
||||
} else {
|
||||
/* Allow zero-length SSIDs */
|
||||
ssid = NULL;
|
||||
|
@ -1927,13 +1926,12 @@ DBusMessage * wpas_dbus_handler_add_blob(DBusMessage *message,
|
|||
goto err;
|
||||
}
|
||||
|
||||
blob->data = os_malloc(blob_len);
|
||||
blob->data = os_memdup(blob_data, blob_len);
|
||||
blob->name = os_strdup(blob_name);
|
||||
if (!blob->data || !blob->name) {
|
||||
reply = wpas_dbus_error_no_memory(message);
|
||||
goto err;
|
||||
}
|
||||
os_memcpy(blob->data, blob_data, blob_len);
|
||||
blob->len = blob_len;
|
||||
|
||||
wpa_config_set_blob(wpa_s->conf, blob);
|
||||
|
|
|
@ -429,10 +429,9 @@ static int hs20_process_icon_binary_file(struct wpa_supplicant *wpa_s,
|
|||
dl_list_for_each(icon, &wpa_s->icon_head, struct icon_entry, list) {
|
||||
if (icon->dialog_token == dialog_token && !icon->image &&
|
||||
os_memcmp(icon->bssid, sa, ETH_ALEN) == 0) {
|
||||
icon->image = os_malloc(slen);
|
||||
icon->image = os_memdup(pos, slen);
|
||||
if (!icon->image)
|
||||
return -1;
|
||||
os_memcpy(icon->image, pos, slen);
|
||||
icon->image_len = slen;
|
||||
hs20_remove_duplicate_icons(wpa_s, icon);
|
||||
wpa_msg(wpa_s, MSG_INFO,
|
||||
|
|
|
@ -760,10 +760,9 @@ static int ibss_rsn_process_rx_eapol(struct ibss_rsn *ibss_rsn,
|
|||
if (supp < 0)
|
||||
return -1;
|
||||
|
||||
tmp = os_malloc(len);
|
||||
tmp = os_memdup(buf, len);
|
||||
if (tmp == NULL)
|
||||
return -1;
|
||||
os_memcpy(tmp, buf, len);
|
||||
if (supp) {
|
||||
peer->authentication_status |= IBSS_RSN_AUTH_EAPOL_BY_PEER;
|
||||
wpa_printf(MSG_DEBUG, "RSN: IBSS RX EAPOL for Supplicant from "
|
||||
|
|
|
@ -259,11 +259,10 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
|
|||
* advertised in beacons match the one in peering frames, sigh.
|
||||
*/
|
||||
if (conf->hw_mode == HOSTAPD_MODE_IEEE80211G) {
|
||||
conf->basic_rates = os_malloc(sizeof(basic_rates_erp));
|
||||
conf->basic_rates = os_memdup(basic_rates_erp,
|
||||
sizeof(basic_rates_erp));
|
||||
if (!conf->basic_rates)
|
||||
goto out_free;
|
||||
os_memcpy(conf->basic_rates, basic_rates_erp,
|
||||
sizeof(basic_rates_erp));
|
||||
}
|
||||
} else {
|
||||
rate_len = 0;
|
||||
|
@ -306,11 +305,10 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
|
|||
wpas_mesh_copy_groups(bss, wpa_s);
|
||||
} else {
|
||||
bss->conf->sae_groups =
|
||||
os_malloc(sizeof(default_groups));
|
||||
os_memdup(default_groups,
|
||||
sizeof(default_groups));
|
||||
if (!bss->conf->sae_groups)
|
||||
goto out_free;
|
||||
os_memcpy(bss->conf->sae_groups, default_groups,
|
||||
sizeof(default_groups));
|
||||
}
|
||||
|
||||
len = os_strlen(ssid->passphrase);
|
||||
|
|
|
@ -2341,11 +2341,10 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src)
|
|||
|
||||
for (i = 0; i < src->num_ssids; i++) {
|
||||
if (src->ssids[i].ssid) {
|
||||
n = os_malloc(src->ssids[i].ssid_len);
|
||||
n = os_memdup(src->ssids[i].ssid,
|
||||
src->ssids[i].ssid_len);
|
||||
if (n == NULL)
|
||||
goto failed;
|
||||
os_memcpy(n, src->ssids[i].ssid,
|
||||
src->ssids[i].ssid_len);
|
||||
params->ssids[i].ssid = n;
|
||||
params->ssids[i].ssid_len = src->ssids[i].ssid_len;
|
||||
}
|
||||
|
@ -2353,30 +2352,26 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src)
|
|||
params->num_ssids = src->num_ssids;
|
||||
|
||||
if (src->extra_ies) {
|
||||
n = os_malloc(src->extra_ies_len);
|
||||
n = os_memdup(src->extra_ies, src->extra_ies_len);
|
||||
if (n == NULL)
|
||||
goto failed;
|
||||
os_memcpy(n, src->extra_ies, src->extra_ies_len);
|
||||
params->extra_ies = n;
|
||||
params->extra_ies_len = src->extra_ies_len;
|
||||
}
|
||||
|
||||
if (src->freqs) {
|
||||
int len = int_array_len(src->freqs);
|
||||
params->freqs = os_malloc((len + 1) * sizeof(int));
|
||||
params->freqs = os_memdup(src->freqs, (len + 1) * sizeof(int));
|
||||
if (params->freqs == NULL)
|
||||
goto failed;
|
||||
os_memcpy(params->freqs, src->freqs, (len + 1) * sizeof(int));
|
||||
}
|
||||
|
||||
if (src->filter_ssids) {
|
||||
params->filter_ssids = os_malloc(sizeof(*params->filter_ssids) *
|
||||
params->filter_ssids = os_memdup(src->filter_ssids,
|
||||
sizeof(*params->filter_ssids) *
|
||||
src->num_filter_ssids);
|
||||
if (params->filter_ssids == NULL)
|
||||
goto failed;
|
||||
os_memcpy(params->filter_ssids, src->filter_ssids,
|
||||
sizeof(*params->filter_ssids) *
|
||||
src->num_filter_ssids);
|
||||
params->num_filter_ssids = src->num_filter_ssids;
|
||||
}
|
||||
|
||||
|
@ -2389,14 +2384,12 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src)
|
|||
|
||||
if (src->sched_scan_plans_num > 0) {
|
||||
params->sched_scan_plans =
|
||||
os_malloc(sizeof(*src->sched_scan_plans) *
|
||||
os_memdup(src->sched_scan_plans,
|
||||
sizeof(*src->sched_scan_plans) *
|
||||
src->sched_scan_plans_num);
|
||||
if (!params->sched_scan_plans)
|
||||
goto failed;
|
||||
|
||||
os_memcpy(params->sched_scan_plans, src->sched_scan_plans,
|
||||
sizeof(*src->sched_scan_plans) *
|
||||
src->sched_scan_plans_num);
|
||||
params->sched_scan_plans_num = src->sched_scan_plans_num;
|
||||
}
|
||||
|
||||
|
@ -2421,10 +2414,9 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src)
|
|||
if (src->bssid) {
|
||||
u8 *bssid;
|
||||
|
||||
bssid = os_malloc(ETH_ALEN);
|
||||
bssid = os_memdup(src->bssid, ETH_ALEN);
|
||||
if (!bssid)
|
||||
goto failed;
|
||||
os_memcpy(bssid, src->bssid, ETH_ALEN);
|
||||
params->bssid = bssid;
|
||||
}
|
||||
|
||||
|
|
|
@ -1167,10 +1167,9 @@ int sme_update_ft_ies(struct wpa_supplicant *wpa_s, const u8 *md,
|
|||
os_memcpy(wpa_s->sme.mobility_domain, md, MOBILITY_DOMAIN_ID_LEN);
|
||||
wpa_hexdump(MSG_DEBUG, "SME: FT IEs", ies, ies_len);
|
||||
os_free(wpa_s->sme.ft_ies);
|
||||
wpa_s->sme.ft_ies = os_malloc(ies_len);
|
||||
wpa_s->sme.ft_ies = os_memdup(ies, ies_len);
|
||||
if (wpa_s->sme.ft_ies == NULL)
|
||||
return -1;
|
||||
os_memcpy(wpa_s->sme.ft_ies, ies, ies_len);
|
||||
wpa_s->sme.ft_ies_len = ies_len;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -87,13 +87,10 @@ static int wmm_ac_add_ts(struct wpa_supplicant *wpa_s, const u8 *addr,
|
|||
}
|
||||
|
||||
/* copy tspec */
|
||||
_tspec = os_malloc(sizeof(*_tspec));
|
||||
_tspec = os_memdup(tspec, sizeof(*_tspec));
|
||||
if (!_tspec)
|
||||
return -1;
|
||||
|
||||
/* store the admitted TSPEC */
|
||||
os_memcpy(_tspec, tspec, sizeof(*_tspec));
|
||||
|
||||
if (dir != WMM_AC_DIR_DOWNLINK) {
|
||||
ret = wpa_drv_add_ts(wpa_s, tsid, addr, up, admitted_time);
|
||||
wpa_printf(MSG_DEBUG,
|
||||
|
|
|
@ -85,12 +85,11 @@ int ieee802_11_send_wnmsleep_req(struct wpa_supplicant *wpa_s,
|
|||
/* TFS IE(s) */
|
||||
if (tfs_req) {
|
||||
wnmtfs_ie_len = wpabuf_len(tfs_req);
|
||||
wnmtfs_ie = os_malloc(wnmtfs_ie_len);
|
||||
wnmtfs_ie = os_memdup(wpabuf_head(tfs_req), wnmtfs_ie_len);
|
||||
if (wnmtfs_ie == NULL) {
|
||||
os_free(wnmsleep_ie);
|
||||
return -1;
|
||||
}
|
||||
os_memcpy(wnmtfs_ie, wpabuf_head(tfs_req), wnmtfs_ie_len);
|
||||
} else {
|
||||
wnmtfs_ie = os_zalloc(MAX_TFS_IE_LEN);
|
||||
if (wnmtfs_ie == NULL) {
|
||||
|
|
|
@ -1027,10 +1027,9 @@ static struct wpa_ssid * wpas_wps_add_network(struct wpa_supplicant *wpa_s,
|
|||
continue;
|
||||
|
||||
os_free(ssid->ssid);
|
||||
ssid->ssid = os_malloc(bss->ssid_len);
|
||||
ssid->ssid = os_memdup(bss->ssid, bss->ssid_len);
|
||||
if (ssid->ssid == NULL)
|
||||
break;
|
||||
os_memcpy(ssid->ssid, bss->ssid, bss->ssid_len);
|
||||
ssid->ssid_len = bss->ssid_len;
|
||||
wpa_hexdump_ascii(MSG_DEBUG, "WPS: Picked SSID from "
|
||||
"scan results",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue