Skip to content

Commit 6e9f6a4

Browse files
author
Mika Leppänen
committed
Corrected memory errors and some compiler warnings
Corrected some dynamic memory errors detected by valgrind.
1 parent c5f1af3 commit 6e9f6a4

File tree

4 files changed

+43
-19
lines changed

4 files changed

+43
-19
lines changed

source/6LoWPAN/ws/ws_bootstrap.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,7 +1725,7 @@ static void ws_bootstrap_start_discovery(protocol_interface_info_entry_t *cur)
17251725
}
17261726

17271727
// Start authentication
1728-
static void ws_bootstrap_start_authentication(protocol_interface_info_entry_t *cur)
1728+
static void ws_bootstrap_start_authentication(void)
17291729
{
17301730
ws_pae_controller_supplicant_authenticate();
17311731
}
@@ -2036,15 +2036,13 @@ static void ws_bootstrap_event_handler(arm_event_s *event)
20362036
//Add Test ecurity key and security level's
20372037

20382038

2039-
//////////////////
20402039
// Advertisements stopped during the EAPOL
20412040
cur->ws_info->trickle_pa_running = false;
20422041
cur->ws_info->trickle_pc_running = false;
20432042
cur->ws_info->trickle_pas_running = false;
20442043
cur->ws_info->trickle_pcs_running = false;
2045-
//////////////////
20462044

2047-
ws_bootstrap_start_authentication(cur);
2045+
ws_bootstrap_start_authentication();
20482046
break;
20492047

20502048
case WS_CONFIGURATION_START:

source/6LoWPAN/ws/ws_eapol_relay.c

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,21 @@ static void ws_eapol_relay_mpx_data_confirm(const mpx_api_t* api, const struct m
4545
static void ws_eapol_relay_mpx_data_indication(const mpx_api_t* api, const struct mcps_data_ind_s *data);
4646
static void ws_eapol_relay_data_request_primitiv_set(mcps_data_req_t *dataReq, protocol_interface_info_entry_t *cur);
4747

48+
typedef struct {
49+
uint8_t handle;
50+
void *data_ptr;
51+
ns_list_link_t link;
52+
} eapol_relay_msdu_entry_t;
53+
54+
typedef NS_LIST_HEAD(eapol_relay_msdu_entry_t, link) eapol_relay_msdu_list_t;
55+
4856
typedef struct {
4957
protocol_interface_info_entry_t *interface_ptr; /**< List link entry */
5058
int8_t relay_socket_id; /**< Socket ID for relay */
5159
mpx_api_t *mpx_api; /**< mpx api */
5260
uint16_t mpx_user_id; /**< mpx user identifier */
61+
eapol_relay_msdu_list_t msdu_list; /**< msdu list */
62+
uint8_t msdu_handle; /**< msdu handle */
5363
} eapol_relay_data_t;
5464

5565
static eapol_relay_data_t *eapol_relay_data;
@@ -61,6 +71,8 @@ void ws_eapol_relay_init(protocol_interface_info_entry_t *cur)
6171
}
6272
eapol_relay_data->interface_ptr = cur;
6373
eapol_relay_data->relay_socket_id = socket_open(IPV6_NH_UDP, 10253, &ws_eapol_relay_socket_cb);
74+
ns_list_init(&eapol_relay_data->msdu_list);
75+
eapol_relay_data->msdu_handle = 0;
6476
}
6577

6678
static void ws_eapol_relay_socket_cb(void *cb)
@@ -82,14 +94,20 @@ static void ws_eapol_relay_socket_cb(void *cb)
8294
return;
8395
}
8496

85-
memcpy(data_request.DstAddr, pdu->eui_64, 8);
97+
eapol_relay_msdu_entry_t *msdu_entry = ns_dyn_mem_temporary_alloc(sizeof(eapol_relay_msdu_entry_t));
98+
if (!msdu_entry) {
99+
ns_dyn_mem_free(pdu);
100+
return;
101+
}
102+
msdu_entry->data_ptr = pdu;
103+
msdu_entry->handle = eapol_relay_data->msdu_handle++;
104+
ns_list_add_to_start(&eapol_relay_data->msdu_list, msdu_entry);
86105

87-
data_request.msdu = &(pdu->kmp_id);
106+
memcpy(data_request.DstAddr, pdu->eui_64, 8);
107+
data_request.msdu = &pdu->kmp_id;
88108
data_request.msduLength = cb_data->d_len - 8;
89109

90110
eapol_relay_data->mpx_api->mpx_data_request(eapol_relay_data->mpx_api, &data_request, eapol_relay_data->mpx_user_id);
91-
92-
ns_dyn_mem_free(pdu);
93111
}
94112

95113
static void ws_eapol_relay_data_request_primitiv_set(mcps_data_req_t *dataReq, protocol_interface_info_entry_t *cur)
@@ -116,8 +134,20 @@ int8_t ws_eapol_relay_mpx_register(struct mpx_api_s *mpx_api, uint16_t mpx_user_
116134

117135
static void ws_eapol_relay_mpx_data_confirm(const mpx_api_t* api, const struct mcps_data_conf_s *data)
118136
{
119-
(void) api;
120-
(void) data;
137+
(void) api;
138+
139+
if (!eapol_relay_data) {
140+
return;
141+
}
142+
143+
ns_list_foreach(eapol_relay_msdu_entry_t, msdu, &eapol_relay_data->msdu_list) {
144+
if (msdu->handle == data->msduHandle) {
145+
ns_dyn_mem_free(msdu->data_ptr);
146+
ns_list_remove(&eapol_relay_data->msdu_list, msdu);
147+
ns_dyn_mem_free(msdu);
148+
return;
149+
}
150+
}
121151
}
122152

123153
static void ws_eapol_relay_mpx_data_indication(const mpx_api_t* api, const struct mcps_data_ind_s *data)

source/6LoWPAN/ws/ws_pae_auth.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,15 @@ static kmp_api_t *ws_pae_auth_kmp_incoming_ind(kmp_type_e type, uint8_t *eui_64)
169169

170170
static void ws_pae_auth_kmp_api_create_confirm(kmp_api_t *kmp, kmp_result_e result)
171171
{
172-
// KMP-CREATE.request has failed, authentication error, just stop for now
173-
if (result != KMP_RESULT_OK) {
174-
supp_entry_t *supp = kmp->app_data_ptr;
175-
ws_pae_lib_kmp_list_delete(&supp->kmp_list, kmp);
176-
}
172+
(void) kmp;
173+
(void) result;
174+
// If KMP-CREATE.request has failed, authentication error, just stop for now
177175
}
178176

179177
static void ws_pae_auth_kmp_api_create_indication(kmp_api_t *kmp, kmp_type_e type, uint8_t *eui_64)
180178
{
181179
(void) type;
182180
(void) eui_64;
183-
184181
// For now, accept every KMP-CREATE.indication
185182
kmp_api_create_response(kmp, KMP_RESULT_OK);
186183
}

source/6LoWPAN/ws/ws_pae_supp.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,11 @@ static kmp_api_t *ws_pae_supp_kmp_incoming_ind(kmp_type_e type, uint8_t *eui_64)
129129

130130
static void ws_pae_supp_kmp_api_create_confirm(kmp_api_t *kmp, kmp_result_e result)
131131
{
132+
(void) kmp;
133+
132134
// KMP-CREATE.request has failed, authentication error
133135
if (result != KMP_RESULT_OK) {
134136
supp_data->auth_completed_cb(false);
135-
ws_pae_lib_kmp_list_delete(&supp_data->kmp_list, kmp);
136137
}
137138
}
138139

@@ -155,8 +156,6 @@ static void ws_pae_supp_kmp_api_finished_indication(kmp_api_t *kmp, kmp_result_e
155156
if (type == IEEE_802_11_4WH && result == KMP_RESULT_OK && supp_data->auth_completed_cb) {
156157
supp_data->auth_completed_cb(true);
157158
}
158-
159-
ws_pae_lib_kmp_list_delete(&supp_data->kmp_list, kmp);
160159
}
161160

162161
static void ws_pae_supp_kmp_api_finished(kmp_api_t *kmp)

0 commit comments

Comments
 (0)